使用%like%与两列进行R比较

时间:2018-04-20 22:42:43

标签: r

我想执行软匹配,类似于两列之间的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]但似乎我无法使用此方法进行列匹配,我需要使用特定的字符串。

1 个答案:

答案 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 = "|")]