【问题标题】:Remove rows containing identical or word-permuted sentences from a data frame in R从 R 中的数据框中删除包含相同或单词排列句子的行
【发布时间】:2016-12-20 13:38:15
【问题描述】:

我有一个带有文本的数据框

TERM
good morning
hello
morning good
you're welcome
hello
hi

我想过滤掉所有重复的单词以及所有单词相同但顺序不同的单词。这样我得到:

TERM
good morning
hello
you're welcome
hi

我知道如何用 stringdist 获取两个单词的距离。

stringdist(stringOriginal,stringCompare,method=qgram)

但由于我的数据帧很长,我不想遍历所有条目。

如何过滤掉相似的词条?

谢谢 约尔格

【问题讨论】:

  • 您可以使用strsplit 和集合函数unionintersectsetdiff 设计一个蛮力方法。
  • 修改问题以包含您开始使用的数据框类型的小示例以及所需的输出会很有用。
  • 使用stringdist 你可以这样做:library(stringdist); sdm <- stringdistmatrix(DF$TERM, DF$TERM, method = "qgram", useNames = "strings"); sdm[!duplicated(sdm),]

标签: r dataframe stringdist


【解决方案1】:

将其分解为单词,对每条记录中的单词进行排序,并保留已排序单词不重复的行。没有使用任何包。

subset(DF, !duplicated(lapply(strsplit(TERM, " "), sort)))

给予:

            TERM
1   good morning
2          hello
4 you're welcome
6             hi

注意:可重现形式的输入是:

Lines <- "TERM
good morning
hello
morning good
you're welcome
hello
hi"
DF <- read.csv(text = Lines, as.is = TRUE, strip.white = TRUE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2014-10-01
    • 1970-01-01
    • 2018-04-04
    相关资源
    最近更新 更多