R-rbind.fill|列數不一致的多個數據集“智能”合並,Get!


 

本文首發於"生信補給站",https://mp.weixin.qq.com/s/aUdleBXDwUUpxGOONllyiA

Q:多個數據集,列數不一致,列名也不一致,如何按行合並,然后保留全部文件的變量並集呢?

A:使用 rbind.fill 函數試試!

 

數據集按列合並時,可以根據merge 或者 dplyr函數包的merge系列函數決定連接方式,達到數據合並的需求。

但是按行合並時常用的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))

img

data1,data2,data3 列數不一致,列名也不一致,如何按行合並,然后保留全部文件的變量並集呢?

可能的問題:

1)rbind: 是根據行進行合並(行疊加)但是要求rbind(a, c)中矩陣a、c的列數必需相等。

2)列數相同的時候,變量名不一致也會合並,導致出錯

 

二 rbind.fill “智能”合並

列數不一致多個數據集,需要按行合並,嘗試使用plyr包rbind.fill函數

library(plyr)
rbind.fill(data1,data2,data3)

img

吶,就是這樣,rbind.fill函數會自動對應數據列名不存在的會補充列,缺失時NA填充。

 

精心整理(含圖版)|R語言生信分析,可視化,你要的全拿走,建議收藏!

img


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM