在SQL中,您可以像这样连接表:
...on table1.long_id like '%'+table2.short_id+'%'
其中long_id是一个长字符串,可能包含也可能不包含short_id,%
是通配符。
有没有办法在 R 中加入,最好是 data.table ?像这样:
table1[table2, on = .(long_id %like% short_id)]
我认为它可能作为非equi连接的一部分,但无法弄清楚如何做到这一点。谢谢!
修改
我在下面添加了一个可重复的示例。
使用下面的两个数据表,我想加入longid包含shortid。
t1<- data.table(longid=c("5-6-7", "6-4-6", "4-1-5", "4-2-9", "2-8-6"))
t2<- data.table(shortid=c("1", "2", "3"))
我希望结果像这样
result <- data.table(shortid=c("1", "2", "2"), longid=c("4-1-5", "4-2-9",
"2-8-6"))
答案 0 :(得分:1)
您的数据框:
CRTPGM
使用grepl我发现id被加入
t1<- data.table(longid=c("5-6-7", "6-4-6", "4-1-5", "4-2-9", "2-8-6"))
t2<- data.table(shortid=c("1", "2", "3"))
我在这里找到了匹配
TF<-sapply(as.character(t2$shortid),grepl,x=as.character(t1$longid)) #Like operation using grepl
组合输出
max1<-apply(TF,1,function(x) which(x==1)) #Find match in t1
max2<-apply(t(TF),1,function(x) which(x==1)) #Find match in t2