【发布时间】:2019-01-31 08:14:48
【问题描述】:
我在匹配 r 中的多个字符串时遇到了困难。我拥有的数据框如下所示:
Var1 Var2
1 SJDJWK P04TGI7F3;P030Y7Y11;PE35RV747;Q2UKLVVX4
2 ODJSMDK Q2UKLVVX4;PWER00711;PE35RV747;Q2UKLVVX4
3 JDKSAKDJ PE35RV747;P0F071G1G
我想匹配用“;”分隔的字符串使用以下数据框中的值:
Var_x Var_y
1 P04TGI7F3 good
2 P030Y7Y11 normal
3 PE35RV747 bad
4 Q2UKLVVX4 normal
所以生成的数据框看起来像:
Var1 Var2 Var3
1 SJDJWK P04TGI7F3;P030Y7Y11;PE35RV747;Q2UKLVVX4 good;normal;bad;normal
2 ODJSMDK Q2UKLVVX4;PWER00711;PE35RV747;Q2UKLVVX4 normal;bad;normal
3 JDKSAKDJ PE35RV747;P0F071G1G bad
到目前为止,我尝试使用模糊连接来做到这一点:
fuzzy_left_join(Data1, Data2, by = c("Var2"="Var_x"), match_fun = str_detect)
这可以完成工作,但它使用大量内存(我的数据集非常大,R 停止工作)。我试图用 for 循环来做到这一点,但我不知道该怎么做。有谁知道吗?
【问题讨论】:
-
一个选项将宽改成长格式,然后使用普通连接,然后再次将长改成宽。