我有两组信息:
一个csv文件,其中每一行都有注释,例如:
a。我爱足球 b。橄榄球是一场艰难的比赛 C。你好世界
另一个列出与运动有关的单词的csv文件,例如:
a。网球 b。足球 C。橄榄球
我想做的是: 一种。查找第二个文件中的任何单词是否在第一个文件的每个单独行中至少出现一次。 b。如果它至少出现一次,则应归类为反对每条评论的运动,其他评论除外。
输出文件应如下所示:
C#
我想在R中进行此练习。我在R中探索了str_detect和grepl函数,但未实现所需的输出。
感谢您的帮助。
谢谢
答案 0 :(得分:0)
这是一种迭代关键字并使用grepl
匹配句子的方法。根据句子数据的干净程度,您可能需要考虑使用agrepl
来进行模糊匹配(但也可能导致误报)。
df <- data.frame(sentences=c("I love football", "Rugby is a tough game", "Hello World"))
keywords <- c("tennis", "football", "rugby")
cbind(df, sapply(keywords, function(x) grepl(x, df$sentences, ignore.case = TRUE)))
sentences tennis football rugby
1 I love football FALSE TRUE FALSE
2 Rugby is a tough game FALSE FALSE TRUE
3 Hello World FALSE FALSE FALSE
重新阅读您的帖子,如果您只想标记某项而非个人运动,则可以:
cbind(df, sports = rowSums(sapply(keywords, function(x) grepl(x, df$sentences, ignore.case = TRUE))) > 0)
sentences sports
1 I love football TRUE
2 Rugby is a tough game TRUE
3 Hello World FALSE