string - 两列中每一对的 vsetdiff
问题描述
我已经看到要计算两个字符串(s1 和 s2)中不同单词的数量,您可以使用:
length(vsetdiff(unlist(strsplit(s1," ")),unlist(strsplit(s2," "))))
如果我有两列字符串,我如何有效地计算两列之间每对字符串之间的不同单词的数量。例如,使用以下虚拟列:
a=as.data.frame(c("Insurance broker","Phone Operator","real estate agent","child care worker"))
colnames(a)=c("Occupation")
b=as.data.frame(c("Broker","Dog walker","health care coordinator"))
colnames(b)=c("Job")
我想计算 Occupation 和 Job 列中每对条目之间不同单词的数量
编辑:
澄清:
我想要一些矩阵(即 4x3 或 3x4)来计算两者之间的差异
保险经纪人和经纪人
保险经纪人和遛狗者
保险经纪人和医疗保健协调员
...
儿童保育员和医疗保健协调员
解决方案
library(stringr)
l_1 = unlist(str_split(a$Occupation, " "))
l_2 = unlist(str_split(b$Job, " "))
> sum(!l_1 %in% l_2)
[1] 9
> sum(!l_2 %in% l_1)
[1] 5
> l_1[l_1 %in% l_2]
[1] "care"
> l_2[l_2 %in% l_1]
[1] "care"
推荐阅读
- windows - 我可以使用什么独特的环境变量来获取 32 位和 64 位 Windows 下的 32 位程序文件文件夹?
- c++ - 指向向量和向量的指针中的循环迭代
- android - Android/Kotlin:错误:“期待顶级声明 > 任务:app:buildInfoGeneratorDebug”
- ffmpeg - 获得http请求时是否可以使用ffmpeg将.mp4转换为.ts
- python - Python中素数查找算法的运行时间
- angular - 如何以角度使用网络工作者(ngx-web-worker)?
- ruby - 使用 `Regexp.new` 从字符串中提取子字符串
- ios - 如何在 iOS 应用程序中从 Adobe Lightroom 重现高光和阴影效果
- php - 在 laravel 5.5 中更新订单项
- c# - 使用单一方法维护整个项目的历史记录