如果在400万观测数据文件的每一行中出现约2000字的一个,我正在使用R和写脚本来计算脚本。具有观察值(df)的数据集包含两列,一列包含文本(df $ lead_paragraph),另一列包含日期(df $ date)。如果在400万观测数据集的每一行中出现一个字,则计数
使用以下内容,我可以计算列表(p)中的任何单词是否出现在df文件的lead_paragraph列的每一行中,并将答案作为新列输出。
df$pcount<-((rowSums(sapply(p, grepl, df$lead_paragraph,
ignore.case=TRUE) == TRUE, na.rm=T) > 0) * 1)
但是,如果我包括一览P太多的话,运行代码崩溃R.
我的备用策略是简单地碎裂成片,但我不知道是否有一个更好的,这里使用更优雅的编码解决方案。我的倾向是使用for循环,但是我读的所有内容都表明这不是R的首选。我对R很新,并且不是一个很好的编码器,所以如果不清楚,我很抱歉。
df$pcount1<-((rowSums(sapply(p[1:100], grepl, df$lead_paragraph,
ignore.case=TRUE) == TRUE, na.rm=T) > 0) * 1)
df$pcount2<-((rowSums(sapply(p[101:200], grepl, df$lead_paragraph,
ignore.case=TRUE) == TRUE, na.rm=T) > 0) * 1)
...
df$pcount22<-((rowSums(sapply(p[2101:2200], grepl, df$lead_paragraph,
ignore.case=TRUE) == TRUE, na.rm=T) > 0) * 1)
一些事情/提示,但绝对不是解决方案(还)。首先,数据越大,离开基数R越好(也许使用'data.tables'?)。其次,我会使用'any'函数,在这种情况下,您可以跳过'rowSums'部分,以及不等式和乘法。第三,你知道这些单词是否会随机出现,或者是否有某种模式,即在开始或结束时?如果是的话,这将大大简化事情。最后,尝试解析文本,摆脱不必要的内存使用。 –
目标是计算每行中存在的'p'中任何字符串的出现次数吗? 这样: '对于数据帧x的每一行,计算P中任何字符串的N个出现次数并将其合计到一个新行中? –
@CarlBoneri - 是的,最终,我只需要知道p中的任何字符串是否出现在给定的数据行中(二进制,真/假),但计数就足够了。 – chydock