我需要用df1中的部分匹配字符串替换df2中的字符串。
与1MG一样,解决方案在df1中也有1MG,因此需要用df1中的1MG替换它。 这需要为数百万条记录完成。
> df1
A
1MG
ABOF
Amazon
American Swan
Clovia
> df2
A B
1MG Solution 1MG
ABOF Prime ABOF
Dual Command NA
Amazon AWF AMazon
American Swan Fi AMerican Swan
Clovia World Spaces Clovia
Shape Makers NA
Unions NA
答案 0 :(得分:1)
stringr
包非常适合此类操作,
library(stringr)
df2$B <- str_extract(df2$A, paste(df1$A, collapse = '|'))
df2
# A B
#1 1MG Solution 1MG
#2 ABOF Prime ABOF
#3 Dual Command <NA>
#4 Amazon AWF Amazon
#5 American Swan Fi American Swan
#6 Clovia World Spaces Clovia
#7 Shape Makers <NA>
#8 Unions <NA>
注意:您需要将变量转换为字符(如果它们是因子)
答案 1 :(得分:0)
通过使用grep
功能,您可以查找第一个数据帧中的任何模式是否存在于秒中。
例如:
df <- data.frame(A=c("1MG","ABOF","Amazon","American Swan","Clovia"))
label=c("1MG Sol","ABOF Prim",
"Dual Command","Amazon AWF","something else",
"American Swan Fi","Clovia World Spaces")
apply(df,1,function(x) grep(x,label)) #will return the matching postion
apply函数将返回匹配位置:
> apply(df,1,function(x) grep(x,label))
[1] 1 2 4 6 7
我认为你可以用这种方式找到解决方案