我有一个match_df
显示“匹配规则”的数据框:该列old
应替换new
为其应用的数据框中的列。
old <- c("10000","20000","300ZZ","40000")
new <- c("Name1","Name2","Name3","Name4")
match_df <- data.frame(old,new)
old new
1 10000 Name1
2 20000 Name2
3 300ZZ Name3 # watch the letters
4 40000 Name4
我想在数据框上应用上面的匹配规则working_df
id <- c(1,2,3,4)
value <- c("xyz-10000","20000","300ZZ-230002112","40")
working_df <- data.frame(id,value)
id value
1 1 xyz-10000
2 2 20000
3 3 300ZZ-230002112
4 4 40
我想要的结果是
# result
id value
1 1 Name1
2 2 Name2
3 3 Name3
4 4 40
这意味着我不是在寻找完全匹配的。我宁愿在working_df$value
包含字符串的任何部分后立即替换整个字符串match_df$old
。
我喜欢R 中发布的解决方案:使用 gsub 替换字符,如何创建函数?,但它仅适用于完全匹配。我尝试了gsub
, str_replace_all
fromstringr
但我找不到适合我的解决方案。SOF 上有很多精确匹配的解决方案,但我找不到一个可以理解的解决方案。
非常感谢任何帮助。