我有一个问题一直找不到答案。
让我们假设我有以下数据帧。数据框架包含以下3个观察结果。
data.frame (id = 1:3,
sentence = c("Hi my name is John", "Hi my name is Jack", "Hi my name is Drew")
)
我想去掉下面的两个观察结果,只留下上面有约翰的那一个。unique((解决方案不起作用,因为每个字符串中的最后一个单词不同。我认为应该有一种方法来检查每个字符串中的前三个(或四个(单词是否相同。如果它们是相同的,那么它将删除除顶部观察之外的其他观察。如果有任何帮助,我将不胜感激!
基于三个词:
gsub("^(\S+\s+\S+\s+\S+).*", "\1", dat$sentence)
# [1] "Hi my name" "Hi my name" "Hi my name"
dat[!duplicated(gsub("^(\S+\s+\S+\s+\S+).*", "\1", dat$sentence)),]
# id sentence
# 1 1 Hi my name is John