根据特定条件将数据列添加到数据框?

时间:2018-03-31 21:17:42

标签: r

假设以下数据框:

df <- (data.frame(ID = c("1", "2", "3"),
                               Drink = c("Cola", "Pepsi", "Fanta")))

输出:

     ID  Drink
1     1   Cola        
2     2  Pepsi      
3     3  Fanta

然后我有另一个看起来像这样的数据框:

df2 <- (data.frame(Drink = c("Cola", "Fanta", "Cola", "Pepsi", "Pepsi")))

     Drink
1     Cola        
2    Fanta
3     Cola
4    Pepsi
5    Pepsi

我想在此数据框中创建一个额外的列,其中包含与行中指定的饮料相对应的ID(基于第一个数据框(df)中的ID)。结果如下:

     ID  Drink
1     1   Cola        
2     3  Fanta
3     1   Cola
4     2  Pepsi
5     2  Pepsi

2 个答案:

答案 0 :(得分:2)

只使用基准R,您可以执行以下操作 请注意,为了获得df2的原始订单,您需要订购df2$Drink,然后反转该流程。

inx <- order(df2$Drink)
merge(df, df2)[order(inx), 2:1]
#  ID Drink
#1  1  Cola
#3  3 Fanta
#2  1  Cola
#4  2 Pepsi
#5  2 Pepsi

答案 1 :(得分:1)

您可以从left_join尝试inner_joindplyr

library(dplyr)

df2 %>% left_join(df, by="Drink")

# Drink ID
# 1  Cola  1
# 2 Fanta  3
# 3  Cola  1
# 4 Pepsi  2
# 5 Pepsi  2