reshape2 數(shù)據(jù)操作 數(shù)據(jù)融合( cast)

reshape2 數(shù)據(jù)操作 數(shù)據(jù)融合( cast)

我們?cè)谧鰯?shù)據(jù)分析的時(shí)候,對(duì)數(shù)據(jù)進(jìn)行操作也是一項(xiàng)極其重要的內(nèi)容,這里我們同樣介紹強(qiáng)大包reshape2,其中的幾個(gè)函數(shù),對(duì)數(shù)據(jù)進(jìn)行操作cast和melt兩個(gè)函數(shù)絕對(duì)少不了。

首先是cast,把長(zhǎng)型數(shù)據(jù)轉(zhuǎn)換成你想要的任何寬型數(shù)據(jù),

dcast(data, formula, fun.aggregate = NULL, ..., margins = NULL, subset = NULL, fill = NULL, drop = TRUE, value.var = guess_value(data))

acast(data, formula, fun.aggregate = NULL, ..., margins = NULL, subset = NULL, fill = NULL, drop = TRUE, value.var = guess_value(data))

acast,dcast的區(qū)別在于輸出結(jié)果。acast 輸出結(jié)果為vector/matrix/array,dcast 輸出結(jié)果為data.frame。

參數(shù):

data ?要進(jìn)行轉(zhuǎn)換的數(shù)據(jù)框

formula ?用于轉(zhuǎn)換的公式

fun.aggregate ? 聚合函數(shù),表達(dá)式為:行變量~列變量~三維變量~......,另外,.表示后面沒(méi)有數(shù)據(jù)列,…表示之前或之后的所有數(shù)據(jù)列

margins ?用于添加邊界匯總數(shù)據(jù)

subset ? 用于添加過(guò)濾條件,需要載入plyr包

其他三個(gè)參數(shù),用到的情況相對(duì)較少。


下面來(lái)看些具體的例子

先構(gòu)建一個(gè)數(shù)據(jù)集

1

2

3

4

x<-data.frame(id=1:6,

??????????????name=c("wang","zhang","li","chen","zhao","song"),

??????????????shuxue=c(89,85,68,79,96,53),

??????????????yuwen=c(77,68,86,87,92,63))<br>x



先使用melt函數(shù)對(duì)數(shù)據(jù)進(jìn)行融化操作。

1

2

3

library(reshape2)<br>x1<-melt(x,id=c("id","name"))


x1

可以看到數(shù)據(jù)已經(jīng)變成了長(zhǎng)型數(shù)據(jù)(melt函數(shù)后面詳細(xì)介紹)。

接下來(lái)就是對(duì)數(shù)據(jù)進(jìn)行各種變型操作了。

1acast(x1,id~variable)

1dcast(x1,id~variable)

從以上兩個(gè)執(zhí)行結(jié)果來(lái)看,可以看出acast和dcast的區(qū)別

這里acast輸出結(jié)果省略了id這個(gè)列,而dcast則輸出id列

1acast(x1,id~name~variable)

三維的情況下acast輸出的是一個(gè)數(shù)組,而dcast則報(bào)錯(cuò),因?yàn)閐cast輸出結(jié)果為數(shù)據(jù)框。


1dcast(x1,id~variable,mean,margins=T)

可以看到,邊緣多了兩列匯總數(shù)據(jù)是對(duì)行列求平均的結(jié)果。

1dcast(x1,id~variable,mean,margins=c("id"))

只對(duì)列求平均值,當(dāng)然也可以只對(duì)行求平均值,把id改成variable就可以了。

1

2

library(plyr)

dcast(x1,id~variable,mean,subset=.(id==1|id==3))

這里subset的篩選功能強(qiáng)大可以進(jìn)行各種各樣的篩選操作,類(lèi)似filter的作用。

1dcast(x1,id+name~variable)

數(shù)據(jù)還原成原來(lái)的樣子了。

1dcast(x1,variable~name)

對(duì)行列進(jìn)行對(duì)調(diào)。

1acast(x1,variable~id+name)

到這里,我們已經(jīng)著實(shí)體會(huì)了cast的強(qiáng)大,數(shù)據(jù)幾乎可以轉(zhuǎn)換成任何形式。

跟excel中的數(shù)據(jù)透視表功能類(lèi)似。reshape2 數(shù)據(jù)操作 數(shù)據(jù)融合( cast) - molearner - 博客園

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • R實(shí)戰(zhàn) :重塑數(shù)據(jù)(reshape2)[https://www.cnblogs.com/ljhdo/p/49543...
    ChrisJO閱讀 6,207評(píng)論 0 1
  • 第一課:安裝與基本操作 R的擴(kuò)展包在R官網(wǎng)CRAN;另外,R官網(wǎng)還包含很多擴(kuò)展資料,包括源代碼,手冊(cè),F(xiàn)AQ,推薦...
    lizi_sjtu閱讀 798評(píng)論 0 0
  • 我們用一個(gè)R內(nèi)置的測(cè)試數(shù)據(jù)airquality舉例什么是: head(airquality) ozone sol...
    知無(wú)牙閱讀 739評(píng)論 0 0
  • 1. 安裝導(dǎo)入reshape2 2. 認(rèn)識(shí)長(zhǎng)數(shù)據(jù)與寬數(shù)據(jù) 寬數(shù)據(jù)是我們常見(jiàn)的數(shù)據(jù)集格式,因?yàn)檫@種格式符合數(shù)據(jù)收集的...
    Nash_e381閱讀 3,049評(píng)論 0 1
  • R語(yǔ)言與數(shù)據(jù)挖掘:公式;數(shù)據(jù);方法 R語(yǔ)言特征 對(duì)大小寫(xiě)敏感 通常,數(shù)字,字母,. 和 _都是允許的(在一些國(guó)家還...
    __一蓑煙雨__閱讀 1,857評(píng)論 0 5

友情鏈接更多精彩內(nèi)容