我在根据另一个 Dataframe 的值向 Dataframe 添加新列时遇到了麻烦。我将尝试提供一个最小的、可复制的示例;当然,我真实的的 Dataframe 有很多其他的列,但我不认为它们在这里有什么关系。
假设我有两个 Dataframe DF 1和DF 2。
ID <- c(1, 2, 3, 4, 5)
material <- c("a", "b", "c", "d", "a")
DF1 <- data.frame(ID, material)
ID <- c("a", "b", "c", "d,")
group <- c("x", "x", "y", "z")
DF2 <- data.frame(ID, group)
ID是每个 Dataframe 中的唯一键。我想执行一个操作,将DF1$material与DF2$ID匹配,并向DF 1添加一列,其中包含DF2$group中的关联值。
因此,在上面的示例中,结果如下所示:
ID <- c(1, 2, 3, 4, 5)
material <- c("a", "b", "c", "d", "a")
group <- c("x", "x", "y", "z", "x")
DF1 <- data.frame(ID, material, group)
我更愿意使用tidyverse/dplyr来实现这一点,我尝试过inner_join和left_join,以及带有ifelse()语句的mutate(),这些连接会创建大量重复的列,而ifelse()会产生一个警告:“较长对象长度不是较短对象长度的倍数”。
我相信有一个显而易见的解决办法。我该怎么做呢?
3条答案
按热度按时间xzlaal3s1#
guykilcj2#
您还可以使用merge(),它是R基本包的一部分
gev0vcfq3#
我们可以使用不同的色谱柱