首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从r中的df (大小29175)中删除/替换/gsub df (大小6001)中的所有字匹配列表,不同大小的数据帧

从r中的df (大小29175)中删除/替换/gsub df (大小6001)中的所有字匹配列表,不同大小的数据帧
EN

Stack Overflow用户
提问于 2020-10-25 05:03:51
回答 1查看 24关注 0票数 0

我一直在尝试删除dfmedia (大小29175)中与dfvocab (大小6001)中包含的任何单词相匹配的任何单词。

代码语言:javascript
复制
dfmedia: each row is a sentence of words in chinese. 
我喜歡吃蘋果; 我愛吃饅頭; 我不喜歡菠菜; 我最討厭蘋果!;我很愛菠菜啊;哪個中國人敢不喜歡饅頭?;哎呀饅頭蘋果菠菜都是食物管人家喜歡否?

dfvocab: 蘋果,饅頭,菠菜

desired result: 我喜歡吃; 我愛吃; 我不喜歡; 我最討厭!;我很愛啊;哪個中國人敢不喜歡?;哎呀都是食物管人家喜歡否?

我不认为中文和英文的结果会有什么不同,因为这是一个简单的匹配和删除/替换,但我在这里包括中文以防万一,因为我的og数据是中文的。

我尝试过gsub()、mapply(),并使用stringr将dfmedia和dfvocab绑定到一个dataframe/removing中。然而,由于dfvocab和dfmedia的大小不同,我不确定如何使用在线建议的方法来处理这个问题。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2020-10-25 09:47:31

使用gsub非常简单。只需将所有单词与正则表达式或操作符paste0在一起,并替换为""

代码语言:javascript
复制
> gsub(paste0(dfvocab, collapse="|"), "",  dfmedia)
[1] "我喜歡吃"                 " 我愛吃"                  " 我不喜歡"                " 我最討厭!"              "我很愛啊"                 "哪個中國人敢不喜歡?"    
[7] "哎呀都是食物管人家喜歡否"

(我不会说中文,也不会读中文。)我想,这么大的一个单词集要被删除,你可能需要把6000个单词分成块,我怀疑这会很慢。您可能希望查看tm包,因为文本挖掘可能是一项需要优化此类操作的任务。

下面是一种构建可重现示例的方法:

代码语言:javascript
复制
> dfmedia <- scan(text="我喜歡吃蘋果; 我愛吃饅頭; 我不喜歡菠菜; 我最討厭蘋果!;我很愛菠菜啊;哪個中國人敢不喜歡饅頭?;哎呀饅頭蘋果菠菜都是食物管人家喜歡否", what="", sep=";")
Read 7 items
> 
> dfvocab <- scan(text="蘋果,饅頭,菠菜", what="", sep=",")
Read 3 items
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64517978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档