根据字符串合并R中的两个数据帧

时间:2016-11-16 15:45:18

标签: r

我需要通过比较两列来合并两个不等长的数据帧,如果上下文匹配(或非常相似),则合并该特定行。

例如,这就是数据框1的样子

Car   horse.power   price
Car1  15            NA
Car2  25            NA
Car3  55            NA

和数据框2:

Car             price
Car1 (2014)     1234
Car2 turbo      9876

我希望我的最终数据框看起来像这样:

Car   horse.power   price
Car1  15            1234
Car2  25            9876
Car3  55            NA

我该怎么办?

提前致谢!

编辑:我不明白这是如何与this one重复的。在链接的问题中,您有一个固定的客户ID格式。在我的情况下,你不。如果我应用链接问题中提供的解决方案,我最终会这样:

Car         horse.power   price
Car1        15            NA
Car1 (2014) NA            1234
Car2        25            NA
Car2 turbo  NA            9876
Car3        55            NA

1 个答案:

答案 0 :(得分:0)

一种方法是使用levenshtein距离(使用adist()):

# set up the two dataframes

df1 <- data.frame(Car = c('Car1', 'Car2', 'Car3'),
                  horse.power = c(15, 25, 55),
                  price = c(NA, NA, NA))
df2 <- data.frame(Car = c('Car1 (2014)', 'Car2 turbo', 'Car3 slow'),
                  price = c(1234, 9876, 21212))

# take the minimal distance and choose the price column
df1$price <- df2$price[apply(adist(df2$Car, df1$Car), 1, which.min)]
df1

这会产生:

   Car horse.power price
1 Car1          15  1234
2 Car2          25  9876
3 Car3          55 21212