r中的文本匹配循环

时间:2016-01-15 22:04:13

标签: r grep

我在csv file_1的一列中有10000个或更多文本。 在另一个csv file_2中,我需要在file_1中搜索一些单词,如果文本包含该单词,则需要在下一列中进行记录。 需要多次搜索所有文本中的所有单词,单个文本可以包含来自file_2的多个单词,希望下一列中的所有单词都以逗号分隔。 大小写匹配也可能是一个挑战,我只想要完全匹配: 例: file_1     File_1 file_2

迪斯尼, 好莱坞

期望的输出:     Desired Output

1 个答案:

答案 0 :(得分:1)

我假设您将文件读入两个独立的数据框,如df1和df2。

您可以根据需要从df2对您的搜索值进行子集化,或将其转换为一个大型向量,以便使用以下方法进行搜索:

  df2 <- as.vector(t(df2))

然后创建一个新列&#34;匹配&#34;在df1上使用包含df2中匹配的项目。

  for (i in 1:nrow(df1)) {
  df1$Match[i] <- paste0(df2[which(df2 %in df1$SearchColumn[i])],collapse = ",") 
  }

这从第1行循环到df1中的最大行数,使用where函数在df2中查找匹配的索引,然后调用这些值并将它们粘贴在一起,用逗号分隔。我确定其他人可以在没有循环的情况下找到实现这一目标的方法,但我希望这对你有用。