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)]
。