> ##########################################################################
> #2020-02-10
> #R长型和宽型数据的相互转换
> #https://www.jianshu.com/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进行数据的长宽转换
>
> 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
R语言长-宽型数据的相互转换
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 笔记说明 tidyr包是一个用于整理数据结构的r包,也是tidyverse的核心包之一。本次笔记介绍tidy da...
- 猛鬼将来,胆小鬼误点。 夏日透心凉的精神冰饮,吓出冷汗的简书灵异故事精选。 招收管理员且接受投稿,欢迎投稿你的灵异...