利用R語(yǔ)言合并數(shù)據(jù)框的行與列實(shí)例代碼
合并數(shù)據(jù)框的行與列
大家好,這里是想做生信大恐龍??的生信小白。今天熟悉數(shù)據(jù)操作中的數(shù)據(jù)合并。
一、rbind()和cbind()函數(shù)
rbind()(按列合并應(yīng)該有相同的行數(shù))和cbind()函數(shù)分別用于按行或按列合并給定向量、矩陣、數(shù)據(jù)框,并創(chuàng)建新矩陣或數(shù)據(jù)框(不了解的小伙伴可以看我之前寫(xiě)的R語(yǔ)言的數(shù)據(jù)結(jié)構(gòu):http://www.dbjr.com.cn/article/254878.htm)。
rbind() # 按行合并指定數(shù)據(jù) cbind() # 按列合并指定數(shù)據(jù)
舉個(gè)列子?????:
rbind(c(1,2,3),c(4,5,6)) # 按行合并 [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6
cbind(c(1,2,3),c(4,5,6)) # 按列合并 [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6
也可以用來(lái)向已存在的數(shù)據(jù)中添加數(shù)據(jù),舉個(gè)列子?????:
a <- matrix(c(1,2,3,4,5,6),2,3) #創(chuàng)建矩陣 a [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 cbind(a,c(5,7)) #按列合并
得到的結(jié)果如下:
cbind(a,c(5,7))
[,1] [,2] [,3] [,4]
[1,] 1 3 5 5
[2,] 2 4 6 7
使用rbind()和cbind()函數(shù)要求等長(zhǎng),意思就是如果按列合并,數(shù)據(jù)的長(zhǎng)度是列數(shù)的正整數(shù)倍數(shù)。
二、merge()函數(shù)
merge()函數(shù)具有cbind()函數(shù)與rbind()函數(shù)的功能,而且可以根據(jù)相同的行名和列名合并數(shù)據(jù)。
merge( x # 待合并的數(shù)據(jù)框 y # 待合并的數(shù)據(jù)框 by #用作合并基準(zhǔn)的列 all = FALSE #共同值不存在xy二者之一時(shí),可以使用all )
舉個(gè)列子?????:
# 數(shù)學(xué)成績(jī) math <- data.frame(name=c("迪迦","泰羅","賽文"),math=c(76,84,64)) # 英語(yǔ)成績(jī) english <- data.frame(name=c("泰羅","賽文","迪迦"),english=c(95,59,42))
可以看到我故意將姓名一行順序改變了,然后我們用merge()函數(shù)將兩個(gè)數(shù)據(jù)框合并。
(c <- merge(math,english)) name math english 1 迪迦 76 42 2 賽文 64 59 3 泰羅 84 95
可以看到merge()函數(shù)將題目按想同列名進(jìn)行了合并。如果我們使用cbind()函數(shù),看看是什么效果?
(d <- cbind(math,english)) name math name english 1 迪迦 76 泰羅 95 2 泰羅 84 賽文 59 3 賽文 64 迪迦 42
cbind()函數(shù)直接將他們合并,即沒(méi)排序也沒(méi)消除相同列。
接下來(lái)講一下all的使用,舉個(gè)列子?????:
#創(chuàng)建兩個(gè)數(shù)據(jù)框,共有四個(gè)奧特曼的成績(jī) math <- data.frame(name=c("迪迦","泰羅","賽文"),math=c(76,84,64)) english <- data.frame(name=c("艾斯","賽文","迪迦"),english=c(95,59,42))
如果我們按照之前的使用方法,將會(huì)得到下面的結(jié)果:
# 只剩下兩位奧特曼了 (c <- merge(math,english)) name math english 1 迪迦 76 42 2 賽文 64 59
接下來(lái)我們使用all:
#當(dāng)all為T(mén)RUE時(shí),不是xy的共同行時(shí),會(huì)被填充為NA (c <- merge(math,english,all = TRUE)) name math english 1 艾斯 NA 95 2 迪迦 76 42 3 賽文 64 59 4 泰羅 84 NA
總結(jié)
好啦!今天我們講了數(shù)據(jù)的合并,講了三個(gè)函數(shù),分別時(shí):cbind(),rbind(),merge()。希望小伙伴們可以多多練習(xí)。
到此這篇關(guān)于利用R語(yǔ)言合并數(shù)據(jù)框的行與列的文章就介紹到這了,更多相關(guān)R語(yǔ)言合并行與列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
R語(yǔ)言隨機(jī)數(shù)生成的實(shí)現(xiàn)
這篇文章主要介紹了R語(yǔ)言隨機(jī)數(shù)生成的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03R語(yǔ)言wilcoxon秩和檢驗(yàn)及wilcoxon符號(hào)秩檢驗(yàn)的操作
這篇文章主要介紹了R語(yǔ)言wilcoxon秩和檢驗(yàn)及wilcoxon符號(hào)秩檢驗(yàn)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04Rcpp和RcppArmadillo創(chuàng)建R語(yǔ)言包的實(shí)現(xiàn)方式
這篇文章主要為大家介紹了Rcpp和RcppArmadillo創(chuàng)建R包實(shí)現(xiàn)方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-11-11R語(yǔ)言變量級(jí)別的數(shù)據(jù)處理操作
這篇文章主要介紹了R語(yǔ)言變量級(jí)別的數(shù)據(jù)處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04