我有两个数据帧:
dim(df1) = 70, 2
Item Freq
Q1 1
Q12 2
Q26 3
dim(df2) = 3780 , 2
Item Freq
Q1 1
Q1 NA
Q1 NA
Q1 NA
Q1 NA
Q1 NA
使用ifelse函数,我试图取df1 $ Item因子并将其分配给df2 $ Freq,但是正如您所看到的,只有第一个项目填入df2中的每个项目,其余部分变为NA。 我试过的代码:
df2$Freq <- ifelse(df1$Item == df2$Item, df1$Freq, df1$Freq)
有没有办法告诉函数我想要所有匹配在df2中的项目?或者是否有其他功能可以实现这一目标? 感谢。
答案 0 :(得分:0)
另一种选择是(使用包dplyr
):
library(dplyr)
df1 <- structure(list(Item = c("Q1", "Q2", "Q3"),
Freq = c(1, 3, 8)),
.Names = c("Item", "Freq"),
row.names = c(NA, -3L),
class = "data.frame")
df2 <- structure(list(Item = c("Q1", "Q1", "Q1", "Q1", "Q1", "Q1", "Q1",
"Q2", "Q2", "Q2", "Q2", "Q2", "Q3"),
Freq = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA)),
.Names = c("Item", "Freq"),
row.names = c(NA, -13L),
class = "data.frame")
df2
Item Freq
1 Q1 NA
2 Q1 NA
3 Q1 NA
4 Q1 NA
5 Q1 NA
6 Q1 NA
7 Q1 NA
8 Q2 NA
9 Q2 NA
10 Q2 NA
11 Q2 NA
12 Q2 NA
13 Q3 NA
df3 <- left_join(select(df2,Item),
df1,
by="Item")
df3
Item Freq
1 Q1 1
2 Q1 1
3 Q1 1
4 Q1 1
5 Q1 1
6 Q1 1
7 Q1 1
8 Q2 3
9 Q2 3
10 Q2 3
11 Q2 3
12 Q2 3
13 Q3 8