下面我提到了两个数据框架:
DF1
ID Value
AL-1 Adf "& ert
AL-2 new '? rti
AL-3 oll- drt/
AL-4 plr -rte-DF2
Value Type
Adf & ert AA
new rti AA
oll-drt& AB
plr-rte AC所需产出:
ID Value Type
AL-1 Adf "& ert AA
AL-2 new '? rti AA
AL-3 oll- drt/ AB
AL-4 plr -rte- AC我希望将值列中的DF1字符与DF2值列的字符匹配,并导出Type。
试着使用语音库,但还做不到,这里需要一些建议。
发布于 2018-05-01 18:35:32
您可以使用adist函数为df1$Value中的每个值获得与df2$Value相比较的字符串之间的近似“距离”。然后,您可以选择距离最小的(因此,精确匹配将被优先排序):
library(utils)
df1$Type <- df2$Type[apply(adist(df1$Value, df2$Value), 1, which.min)]
df1
# ID Value Type
#1 AL-1 Adf "& ert AA
#2 AL-2 new '? rti AA
#3 AL-3 oll- drt/ AB
#4 AL-4 plr -rte- AC发布于 2018-05-01 18:32:05
您可以在R中使用合并函数
df1=data.frame(ID=c("AL-1","AL-2","AL-3"),Value=c("Adf & ert","new '? rti","oll- drt/"))
df2=data.frame(Value=c("Adf & ert","new '? rti","oll- drt/"),Type=c("AA","AA","AB"))
df=merge(df1,df2,by = "Value")发布于 2018-05-01 18:39:21
模糊匹配可能有效。
library(fuzzyjoin)
library(stringr)
DF1 %>% fuzzy_left_join(DF2, by = c("Value" = "Value"), match_fun = str_detect)https://stackoverflow.com/questions/50121776
复制相似问题