R 是否基于某些条件向数据框添加列?

R 是否基于某些条件向数据框添加列?,r,R,假设以下数据帧: df <- (data.frame(ID = c("1", "2", "3"), Drink = c("Cola", "Pepsi", "Fanta"))) 然后我有另一个数据帧,看起来像这样: df2 <- (data.frame(Drink = c("Cola", "Fanta", "Cola", "Pepsi", "Pepsi"))) Drink 1 Cola

假设以下数据帧:

df <- (data.frame(ID = c("1", "2", "3"),
                               Drink = c("Cola", "Pepsi", "Fanta")))
然后我有另一个数据帧,看起来像这样:

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

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

仅使用base 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

inx使用base 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

inx您可以从
dplyr
尝试
left\u-join
internal\u-join

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

您可以从
dplyr
尝试
left\u-join
internal\u-join

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

谢谢你的回复!不幸的是,这个合并函数似乎破坏了我以后的函数,所以我不确定我是否能够实现它。有没有一个简单的VLOOKUP功能,你知道吗?试试
df$ID[match(df2$Drink,df$Drink)]
。谢谢你的回复!不幸的是,这个合并函数似乎破坏了我以后的函数,所以我不确定我是否能够实现它。有没有一个简单的VLOOKUP功能,你知道吗?试试
df$ID[match(df2$Drink,df$Drink)]