如何根据R中字符串的前三个单词删除重复的行



我有一个问题一直找不到答案。

让我们假设我有以下数据帧。数据框架包含以下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

最新更新