R語(yǔ)言中dcast 和 melt的使用

1. 圖片說(shuō)明


2. 例子

示例數(shù)據(jù):

set.seed(123)dat = data.frame(ID = paste0("ID_",1:10),y1 = rnorm(10),y2=rnorm(10),y3=rnorm(10),y4 = rnorm(10))dat

結(jié)果

> dat      ID          y1         y2         y3          y41   ID_1 -0.56047565  1.2240818 -1.0678237  0.426464222   ID_2 -0.23017749  0.3598138 -0.2179749 -0.295071483   ID_3  1.55870831  0.4007715 -1.0260044  0.895125664   ID_4  0.07050839  0.1106827 -0.7288912  0.878133495   ID_5  0.12928774 -0.5558411 -0.6250393  0.821581086   ID_6  1.71506499  1.7869131 -1.6866933  0.688640257   ID_7  0.46091621  0.4978505  0.8377870  0.553917658   ID_8 -1.26506123 -1.9666172  0.1533731 -0.061911719   ID_9 -0.68685285  0.7013559 -1.1381369 -0.3059626610 ID_10 -0.44566197 -0.4727914  1.2538149 -0.38047100

3. 變?yōu)槿校篒D,trait,y:melt

代碼

re1 = melt(data = dat,id.vars=c("ID"),variable.name="Loc",value.name="y")head(re1)

結(jié)果預(yù)覽

> head(re1)    ID Loc           y1 ID_1  y1 -0.560475652 ID_2  y1 -0.230177493 ID_3  y1  1.558708314 ID_4  y1  0.070508395 ID_5  y1  0.129287746 ID_6  y1  1.71506499

4. 三列變?yōu)槿ィ篸cast

代碼

dcast(data=re1,ID ~Loc)

結(jié)果

> dcast(data=re1,ID ~Loc)Using 'y' as value column. Use 'value.var' to override      ID          y1         y2         y3          y41   ID_1 -0.56047565  1.2240818 -1.0678237  0.426464222  ID_10 -0.44566197 -0.4727914  1.2538149 -0.380471003   ID_2 -0.23017749  0.3598138 -0.2179749 -0.295071484   ID_3  1.55870831  0.4007715 -1.0260044  0.895125665   ID_4  0.07050839  0.1106827 -0.7288912  0.878133496   ID_5  0.12928774 -0.5558411 -0.6250393  0.821581087   ID_6  1.71506499  1.7869131 -1.6866933  0.688640258   ID_7  0.46091621  0.4978505  0.8377870  0.553917659   ID_8 -1.26506123 -1.9666172  0.1533731 -0.0619117110  ID_9 -0.68685285  0.7013559 -1.1381369 -0.30596266

5.命令解析

  • melt是融合的意思,將寬的數(shù)據(jù),變?yōu)殚L(zhǎng)的數(shù)據(jù)。比如在田間數(shù)據(jù)中,ID,Loc,rep1, rep2, re3,這里的rep1,rep2,rep3是重復(fù)1,2,3的值,需要將數(shù)據(jù)變?yōu)椋篒D,Loc,Rep,y四列的數(shù)據(jù)。這樣就可以用melt命令
    melt(dat,c("ID","Loc"))
    > ex1 = data.frame(Cul = rep(1:10,2),Loc=rep(1:2,each=10),rep1=rnorm(20),rep2=rnorm(20),rep3=rnorm(20))> head(ex1)Cul Loc        rep1       rep2       rep31   1   1 -0.71040656  0.1176466  0.70178432   2   1  0.25688371 -0.9474746 -0.26219753   3   1 -0.24669188 -0.4905574 -1.57214424   4   1 -0.34754260 -0.2560922 -1.51466775   5   1 -0.95161857  1.8438620 -1.60153626   6   1 -0.04502772 -0.6519499 -0.5309065
    > ex1_re = melt(ex1,c("Cul","Loc"))> head(ex1_re)Cul Loc variable       value1   1   1     rep1 -0.710406562   2   1     rep1  0.256883713   3   1     rep1 -0.246691884   4   1     rep1 -0.347542605   5   1     rep1 -0.951618576   6   1     rep1 -0.04502772
  • dcast是昌數(shù)據(jù),變寬數(shù)據(jù),因此ex1_re如果想要變回去,用dcast(ex1_re, Cul + Loc ~ variable), ~號(hào)左邊是保持不變的列名,~右邊是需要擴(kuò)展的列名, 省略的value是需要填充的數(shù)據(jù)。
    > dcast(ex1_re,Cul+Loc~variable) Cul Loc        rep1        rep2       rep31    1   1 -0.71040656  0.11764660  0.70178432    1   2 -0.57534696  1.44455086  0.78773883    2   1  0.25688371 -0.94747461 -0.26219754    2   2  0.60796432  0.45150405  0.76904225    3   1 -0.24669188 -0.49055744 -1.57214426    3   2 -1.61788271  0.04123292  0.33220267    4   1 -0.34754260 -0.25609219 -1.51466778    4   2 -0.05556197 -0.42249683 -1.00837669    5   1 -0.95161857  1.84386201 -1.601536210   5   2  0.51940720 -2.05324722 -0.119452611   6   1 -0.04502772 -0.65194990 -0.530906512   6   2  0.30115336  1.13133721 -0.280395313   7   1 -0.78490447  0.23538657 -1.461755614   7   2  0.10567619 -1.46064007  0.562989515   8   1 -1.66794194  0.07796085  0.687916816   8   2 -0.64070601  0.73994751 -0.372438817   9   1 -0.38022652 -0.96185663  2.100108918   9   2 -0.84970435  1.90910357  0.976973419  10   1  0.91899661 -0.07130809 -1.2870305

    關(guān)注我

    ID:R-breeding
    公眾號(hào):育種數(shù)據(jù)分析之放飛自我
  • ?

    ?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

    • "use strict";function _classCallCheck(e,t){if(!(e instanc...
      久些閱讀 2,142評(píng)論 0 2
    • From shirinsplayground,非常好的機(jī)器學(xué)習(xí)的文章,保存下來(lái),慢慢學(xué)習(xí)。 https://shi...
      iColors閱讀 1,331評(píng)論 0 0
    • 前言 學(xué)習(xí)數(shù)據(jù)挖掘已經(jīng)有一段時(shí)間了,相關(guān)的文章和書也看了一些,感覺學(xué)習(xí)這個(gè)的關(guān)鍵還是離不開其中形形色色的算法。作為...
      謙嘯閱讀 5,651評(píng)論 2 21
    • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
      不排版閱讀 4,711評(píng)論 0 5
    • 水韻秋色·菊攬芳華”第六屆湖熟菊花展盛大開幕,400畝菊花海正式開門迎客,踏秋賞菊,一攬芳華,這也將成為南京最亮眼...
      無(wú)憂無(wú)慮61閱讀 434評(píng)論 0 0

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