一段时间以来,我一直在努力解决以下问题:
我想计算两个数据框之间的字数差异(出现特征的频率)。数据帧包含两列:特征(单词)和频率。
我想用df A和df B达到以下结果: 来自df A的所有特征/单词以及A的频率减去B的频率。但是,当A中的特征没有出现在B中时,我希望频率仅是A倒数。
我尝试了两个sapply函数:1获得一个名称向量,其名称为:特征和A的频率,以及1获得相同特征在B中的频率(如果特征存在,否则为0)。这两个向量然后组合以获得所需的数据帧。该解决方案有效,但是速度很慢。
你们中有人知道获得这种结果的更快方法吗?
答案 0 :(得分:0)
此处要执行的基本操作是使用特征/单词作为连接条件,将第一个数据帧左连接到第二个数据帧。一种选择是使用sqldf
软件包:
library(sqldf)
sql <- "select a.feature, a.frequency - coalesce(b.frequency, 0) as difference "
sql <- paste0(sql, "from dfA a left join dfB b on a.feature = b.feature")
result <- sqldf(sql)
这可能不是R中可用的最快解决方案,而基R可能提供了更有效的解决方案。但是,上述解决方案很简短,只需要几行代码,并且易于阅读。
答案 1 :(得分:0)
您可以为此使用整洁的文本挖掘。
请参考以下链接。 tidy text mining