【问题标题】:How to remove duplicate rows based on the first three words of a string in R如何根据R中字符串的前三个单词删除重复行
【发布时间】:2021-07-20 23:42:54
【问题描述】:

我有一个问题没有找到答案。

假设我有以下数据框。数据框包含以下 3 个观察值。

data.frame (id  = 1:3,
                  sentence = c("Hi my name is John", "Hi my name is Jack", "Hi my name is Drew")
)

我想删除底部的两个观察结果,只留下顶部有 John 的观察结果。鉴于每个字符串中的最后一个单词不同,因此 unique() 解决方案不起作用。我在想应该有一种方法来检查每个字符串中的前三个(或四个)单词是否相同。如果它们相同,那么它将删除除顶部的观察之外的其他观察。我将不胜感激!

【问题讨论】:

  • 您需要更准确地定义“相似”观察在这里的实际含义。
  • @TimBiegeleisen 将类似的词更改为相同。

标签: r string text


【解决方案1】:

基于三个词:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-15
    • 2018-08-29
    • 2021-12-30
    • 1970-01-01
    • 2018-08-14
    • 2012-03-14
    • 1970-01-01
    相关资源
    最近更新 更多