[英]merging on multiple columns R
如果這不是重復的內容,我感到很驚訝,但是我找不到其他地方的答案。
我有兩個數據幀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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.