如何在R中通过列的部分文本匹配合并两个数据集?
基于部分字符串匹配合并R数据集的问题
我有两个R数据集DF1和DF2,示例如下:
DF1 <- data.frame(point_code = c("358/5/UW_001", "123/4/UW_002", "089/6/UW_003"), value = c(10, 20, 30)) DF2 <- data.frame(Sample.Number = c("AT/ACE/1/1/358/5/DA/3", "AT/ACE/2/2/123/4/DA/4", "AT/ACE/3/3/89/6/DA/5"), score = c(100, 200, 300))
注:两个数据集包含更多待合并的列
我需要通过匹配point_code中包含在Sample.Number里的部分代码(如358/5)来合并这两个数据集,期望输出如下:
point_code value Sample.Number score 1 358/5/UW_001 10 AT/ACE/1/1/358/5/DA/3 100 2 123/4/UW_002 20 AT/ACE/2/2/123/4/DA/4 200 3 089/6/UW_003 30 AT/ACE/3/3/89/6/DA/5 300
我尝试了两种方法,但都遇到问题:
方法一:提取匹配代码段
我尝试提取要匹配的ID代码部分:
DF1$match_code <- sapply(strsplit(DF1$point_code, "/"), function(x) paste(x[1:2], collapse = "/")) DF2$match_code <- sapply(strsplit(DF2$Sample.Number, "/"), function(x) paste(x[5:6], collapse = "/")) merged_data <- merge(DF2, DF1[, c("Lat", "Lon", "var1_P", "var2_P", "var3_P")], by = "match_code")
但存在代码数字位数不一致的问题,例如"089/6"与"89/6"无法匹配。
方法二:使用fuzzyjoin包的regex_left_join
尝试用fuzzyjoin包的regex_left_join函数,但出现报错:
merged <- regex_left_join(DF1, DF2, by = c(point_code = "Sample.Number"), pattern = "(\\d+/\\d+)/") Error in regex_left_join(phy, rawphyA, by = c(point_code = "ACE.Sample.Number"), : unused argument (pattern = "(\\d+/\\d+)/")
后续尝试了他人建议的方法,但仍未得到正确结果,输出出现观测值重复(如359/11)且行匹配错误:
Lat.x Lon.x point_code Lat.y Lon.y Sample.Number 1 40.03039 28.87434 358/5/UW_001 NA NA <NA> 2 41.25814 29.80981 358/7/UW_003 41.2581 29.80981 AT/ACE/1/1/358/7/DA/3 3 42.31510 31.03547 358/9/UW_005 42.3151 31.03547 AT/ACE/1/1/358/9/DA/3 4 43.23883 32.42131 359/11/UW_007 44.5039 34.72199 AT/ACE/1/1/359/19/DA/3 5 43.23883 32.42131 359/11/UW_007 42.8013 31.73753 AT/ACE/1/1/359/10/DA/3 6 43.23883 32.42131 359/11/UW_007 43.2388 32.42131 AT/ACE/1/1/359/11/DA/3 7 43.23883 32.42131 359/11/UW_007 43.7092 33.15066 AT/ACE/1/1/359/12/DA/3 8 43.23883 32.42131 359/11/UW_007 44.1538 33.90936 AT/ACE/1/1/359/13/DA/3 9 44.15381 33.90936 359/13/UW_009 44.5039 34.72199 AT/ACE/1/1/359/19/DA/3
请问有没有更高效且可行的方法实现基于部分字符串匹配的数据集合并?
内容的提问来源于stack exchange,提问作者Strobila
相关产品推荐
相关产品推荐

