从数据框子集数据,并从子集值中获取特定值

时间:2018-09-13 20:46:25

标签: r dataframe subset

我要检查1个数据框中的值(例如在“字母”下面的示例)是否出现在另一个数据框中。如果是这种情况,我希望将一个特定于该值的值(例如,在“排名”下方)从第一个数据帧添加到第二个数据帧...我现在拥有以下内容:

Df1 <- data.frame(c("A", "C", "E"), c(1:3))
colnames(Df1) <- c("letters", "ranking")

Df2 <- data.frame(c("A", "B", "C", "D", "E"))
colnames(Df2) <- c("letters")

Df2$rank <- ifelse(Df2$letters %in% Df1$letters, 1, 0)

但是...我想从Df1中获取特定的“排名”数字,而不是在字母重叠时获得“ 1”。

谢谢!

1 个答案:

答案 0 :(得分:1)

dplyr软件包最适合这个用途。

Df2 <- Df2 %>%
    left_join(Df1,by = "letters")

如果您要保留它,它将显示“ D”的NA。

否则,您可以进行semi_join

DF2 <- Df2 %>%
   semi_join(Df1, by = "letters")

这只会保留它们的共同点(交叉点)