我想执行软匹配,类似于两列之间的R中mysql中的“like”语句,例如
数字1
X1
12345
67890
24689
13579
NUMBER2
X2
123455555
678900000
246890000
135790000
在这两个数据表的情况下,我希望输出返回第一个数据集的子集,其中第一个数据集中的条目“喜欢”第二个数据集中的条目。我尝试使用data.table函数%,如%
like_test< - Number1 [Number1 $ X1%like%Number2 $ X2]但似乎我无法使用此方法进行列匹配,我需要使用特定的字符串。
答案 0 :(得分:1)
选项1 :您可以尝试sqldf
在sql中使用like语句。
您可以执行以下操作。
library(sqldf)
new <- sqldf("select number1 from X1 join X2 where number1 like number2")
选项2:您可以尝试grep,如下所示。注意:我已经切换了X1,X2顺序。
grep(pattern = paste0(X1,collapse = "|"),x = X2,value = T)
选项3 :您仍然可以使用%like%,如下所示。注意:我已经切换了X1,X2顺序。
library(data.table)
X2[X2 %like% paste0(X1,collapse = "|")]