r - R - 查找顺序相反的单词的重复项
问题描述
我有一个 data.table,其中有一列包含职业头衔名称。我想找出重复的职业,但以相反的顺序编写(例如作家广告和广告作家)。这是我的数据的简化版本以及我想得到的结果
data = data.table(
ID = as.character(c("advertisings writer","writer advertisings","setter","drill setter","setter drill","agent claims","claims agent","engineer"))
)
data_result = data.table(
ID = as.character(c("advertisings writer","setter","drill setter","agent claims","engineer"))
)
这是我一直在使用的代码。
data[,b:= strsplit(ID," ")]
data <- data[,.(b=unlist(b)),by = setdiff(names(data),'b')]
setorderv(data,cols=c("ID","b"))
data <- data[,bb:=list(list(unique(b))),by="ID"][,.SD[1],by=c("ID"),.SDcols=c("bb")]
data[,b:=lapply(bb,paste,collapse=' ')]
data[,b:=unlist(b)]
unique(data,by="b")
由于我正在处理相当大的数据集,这种方法非常耗时。
谢谢
解决方案
一个可能的解决方案data.table
:
- 将字符串拆分为单词
- 对单词进行排序
- 粘贴排序的单词
- 获取唯一值
library(data.table)
data[,ID:=sapply(sapply(stringr::str_split(ID,' '),sort),function(x) paste(x,collapse=' '))]
unique(data)
ID
1: advertisings writer
2: setter
3: drill setter
4: agent claims
5: engineer
推荐阅读
- r - 如何删除不同版本的停用词
- c# - 发生超时是因为目标机器在写入 MongoDB 时主动拒绝
- reactjs - 带下拉菜单的 ANT 表
- java - @RequestParam 收到的加号 (+) 被替换为空白
- php - Woocommerce 网站上的 Bot 垃圾邮件过滤器请求
- android - 使用 app-bundle 时,我可以为“原始文件夹”获取不同的配置 APK 吗?
- excel - 根据单元格值使用 VBA 创建文件夹目录
- c - 用户空间中的信号处理如何获取 siginfo 和 ucontext?
- c# - 建议正确重载 NewFamilyInstance
- node.js - 了解 Express 中的中间件