【发布时间】:2013-12-13 22:02:37
【问题描述】:
我是 R 新手,需要建议。 我有一个包含 1 个文本字段的数据框。我需要修复该文本字段中拼写错误的单词。为了帮助解决这个问题,我有一个包含 2 列的第二个文件(字典) - 拼写错误的单词和替换它们的正确单词。
您建议如何做?我写了一个简单的“for循环”,但性能是个问题。 该文件有 ~120K 行,字典有 ~5k 行,程序已经运行了几个小时。文本最多可包含 2000 个字符。
代码如下:
output<-source_file$MEMO_MANUAL_TXT
for (i in 1:nrow(fix_file)) { #dictionary file
target<-paste0(" ", fix_file$change_to_target[i], " ")
replace<-paste0(" ", fix_file$target[i], " ")
output<-gsub(target, replace, output, fixed = TRUE)
【问题讨论】:
-
merge?如果合并太慢,也许加入data.table? -
@joran 不确定我是否理解。文本可能包含多个需要替换的单词。您是否建议将两个数据文件合并为一个文件会更快?
-
我建议使用左连接,然后像在 SQL 中那样填充原始数据框中的缺失值。这是通过
merge或也使用data.table完成的,但语法不同。 data.table 甚至可以使用滚动连接一次性完成。 -
我对“性能是一个问题”并不感到惊讶。 R 只是不适合某些事情的平台。
-
@joran,我仍然不清楚如何使用您的建议。也许我没有正确解释这个问题。原始表格有文字,例如“客户抱怨今天服务不好”。我需要的是找到。第二个表中的“costomer”并将其替换为“customer”,然后将“complainied”替换为“complained”。您是否建议根据文本字段中的每个单词创建连接? (那里可能有 100 个或更多)
标签: r performance merge dataframe