本文首發於"生信補給站",https://mp.weixin.qq.com/s/aUdleBXDwUUpxGOONllyiA
Q:多個數據集,列數不一致,列名也不一致,如何按行合並,然后保留全部文件的變量並集呢?
A:使用 rbind.fill 函數試試!
但是按行合並時常用的rbind,限制條件有點多,發現plyr包的rbind.fill 函數能比較好的解決這個問題。
一, 載入數據
#生成隨機數據
data1<- data.frame(x1=runif(5),x2= runif(5),x3= runif(5))
data2<- data.frame(x1=rnorm(5),x4= runif(5))
data3<- data.frame(x3=rnorm(5),x5= rnorm(5))
data1,data2,data3 列數不一致,列名也不一致,如何按行合並,然后保留全部文件的變量並集呢?
可能的問題:
1)rbind: 是根據行進行合並(行疊加)但是要求rbind(a, c)中矩陣a、c的列數必需相等。
2)列數相同的時候,變量名不一致也會合並,導致出錯
二 rbind.fill “智能”合並
列數不一致多個數據集,需要按行合並,嘗試使用plyr包rbind.fill
函數
library(plyr)
rbind.fill(data1,data2,data3)
吶,就是這樣,rbind.fill
函數會自動對應數據列名,不存在的會補充列,缺失時NA填充。
精心整理(含圖版)|R語言生信分析,可視化,你要的全拿走,建議收藏!