R語言長-寬型數(shù)據(jù)的相互轉換

R 長型和寬型數(shù)據(jù)的相互轉換

> ##########################################################################
> #2020-02-10
> #R長型和寬型數(shù)據(jù)的相互轉換
> #http://www.itdecent.cn/p/c30200471c7d
> widedata <- data.frame(ID=c(1,1,2,2),
+                        Time=c(1,2,1,2),
+                        x1=c(3,4,5,6),
+                        x2=c(7,8,9,10))
> widedata
  ID Time x1 x2
1  1    1  3  7
2  1    2  4  8
3  2    1  5  9
4  2    2  6 10
> library(reshape2)
> (longdata2 <- melt(widedata,id.vars=c("ID","Time"),measure.vars=c("x1","x2")))
  ID Time variable value
1  1    1       x1     3
2  1    2       x1     4
3  2    1       x1     5
4  2    2       x1     6
5  1    1       x2     7
6  1    2       x2     8
7  2    1       x2     9
8  2    2       x2    10
> 
> (widedata2 <- dcast(longdata2,ID+Time~variable))
  ID Time x1 x2
1  1    1  3  7
2  1    2  4  8
3  2    1  5  9
4  2    2  6 10
> (widedata2 <- dcast(longdata2,ID~Time+variable))
  ID 1_x1 1_x2 2_x1 2_x2
1  1    3    7    4    8
2  2    5    9    6   10
> 
> #用tidyr進行數(shù)據(jù)的長寬轉換
> 
> library(tidyr)
> (longdata3 <- gather(widedata, key = "variable",value ="value", x1:x2 ))
  ID Time variable value
1  1    1       x1     3
2  1    2       x1     4
3  2    1       x1     5
4  2    2       x1     6
5  1    1       x2     7
6  1    2       x2     8
7  2    1       x2     9
8  2    2       x2    10
> (widedata3 <- spread(longdata3,key = "variable",value = "value"))
  ID Time x1 x2
1  1    1  3  7
2  1    2  4  8
3  2    1  5  9
4  2    2  6 10
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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