R 多栏合并
如果这不是重复的话,我很惊讶,但是我在其他地方找不到答案 我有两个数据帧,R 多栏合并,r,merge,R,Merge,如果这不是重复的话,我很惊讶,但是我在其他地方找不到答案 我有两个数据帧,data1和data2,它们在一列中不同,但其余的列是相同的。我想将它们合并到一个唯一的标识列,id。但是,如果来自data2的ID在data1中不匹配,我希望data2中的条目附加在底部,类似于plyr::rbind.fill()而不是将data2中的所有对应列重命名为column1.x和column1.y。我意识到这不是最清楚的解释,也许我不应该在周六工作。以下是创建两个数据帧和所需输出的代码: spp1 <-
data1
和data2
,它们在一列中不同,但其余的列是相同的。我想将它们合并到一个唯一的标识列,id
。但是,如果来自data2
的ID在data1
中不匹配,我希望data2
中的条目附加在底部,类似于plyr::rbind.fill()
而不是将data2中的所有对应列重命名为column1.x
和column1.y
。我意识到这不是最清楚的解释,也许我不应该在周六工作。以下是创建两个数据帧和所需输出的代码:
spp1 <- c('A','B','C')
spp2 <- c('B','C','D')
trait.1 <- rep(1.1,length(spp1))
trait.2 <- rep(2.0,length(spp2))
id_1 <- c(1,2,3)
id_2 <- c(2,9,7)
data1 <- data.frame(spp1,trait.1,id_1)
data2 <- data.frame(spp2,trait.2,id_2)
colnames(data1) <- c('spp','trait.1','id')
colnames(data2) <- c('spp','trait.2','id')
spp trait.1 trait.2 id
1 A 1.1 NA 1
2 B 1.1 2 2
3 C 1.1 NA 3
4 C NA 2 9
5 D NA 2 7
试试这个:
library(dplyr)
full_join(data1, data2, by = c("id", "spp"))
输出:
spp trait.1 id trait.2
1 A 1.1 1 NA
2 B 1.1 2 2
3 C 1.1 3 NA
4 C NA 9 2
5 D NA 7 2
或者,merge
也可以:
merge(data1, data2, by = c("id", "spp"), all = TRUE)