亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用多個度量列將數據從長格式轉換為寬格式

用多個度量列將數據從長格式轉換為寬格式

呼如林 2019-06-24 13:21:18
用多個度量列將數據從長格式轉換為寬格式當我想帶來多個度量變量時,我很難找到最優雅和最靈活的方法將數據從長格式切換到寬格式。例如,這里有一個長格式的簡單數據框架。ID是主題,TIME是一個時間變量,而且X和Y是由ID在…TIME:> my.df <- data.frame(ID=rep(c("A","B","C"), 5), TIME=rep(1:5, each=3), X=1:15, Y=16:30)> my.df    ID TIME  X  Y1   A    1  1 162   B    1  2 173   C    1  3 184   A    2  4 195   B    2  5 206   C    2  6 217       A    3  7 228   B    3  8 239   C    3  9 2410  A    4 10 2511  B    4 11 2612  C    4 12 2713  A    5 13 2814        B    5 14 2915  C    5 15 30如果我只想把TIME的列標題中包含X,我知道我可以用cast()從reshape包裝(或dcast()從…reshape2):> cast(my.df, ID ~ TIME, value="X")   ID 1 2 3  4  51  A 1 4 7 10 132  B 2 5 8 11 143  C 3 6 9 12 15但我真正想做的是Y作為另一個度量值變量,并讓列名同時反映度量值變量名稱和時間值:  ID X_1 X_2 X_3  X_4 X_5 Y_1 Y_2 Y_3 Y_4 Y_51  A   1   4   7   10  13  16  19  22  25  282  B   2   5   8   11  14  17     20  23  26  293  C   3   6   9   12  15  18  21  24  27  30(FWIW,我真的不在乎X的后面是Y或者如果它們交織在一起X_1, Y_1, X_2, Y_2等等)我可以通過鑄造-兩次對長數據進行合并結果,盡管列名需要一些工作,如果需要添加第3或第4個變量,則需要對其進行調整X和Y:merge(cast(my.df, ID ~ TIME, value="X"),cast(my.df, ID ~ TIME, value="Y"),by="ID", suffixes=c("_X","_Y"))中的一些函數的組合reshape2和/或plyr應該能夠更優雅地完成我的嘗試,以及更清晰地處理多個度量變量。有點像cast(my.df, ID ~ TIME, value=c("X","Y")),這是無效的。但我還沒弄明白。
查看完整描述

3 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

 reshape(my.df,

           idvar = "ID",

           timevar = "TIME",

           direction = "wide")

施予


  ID X.1 Y.1 X.2 Y.2 X.3 Y.3 X.4 Y.4 X.5 Y.5

1  A   1  16   4  19   7  22  10  25  13  28

2  B   2  17   5  20   8  23  11  26  14  29

3  C   3  18   6  21   9  24  12  27  15  30


查看完整回答
反對 回復 2019-06-24
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

使用data.table_1.9.5,這可以不使用melt因為它可以處理多個value.var柱子。您可以從here

 library(data.table)

 dcast(setDT(my.df), ID~TIME, value.var=c('X', 'Y'))

 #   ID 1_X 2_X 3_X 4_X 5_X 1_Y 2_Y 3_Y 4_Y 5_Y

 #1:  A   1   4   7  10  13  16  19  22  25  28

 #2:  B   2   5   8  11  14  17  20  23  26  29

 #3:  C   3   6   9  12  15  18  21  24  27  30


查看完整回答
反對 回復 2019-06-24
  • 3 回答
  • 0 關注
  • 578 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號