> ##########################################################################
> #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语言长-宽型数据的相互转换
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 笔记说明 tidyr包是一个用于整理数据结构的r包,也是tidyverse的核心包之一。本次笔记介绍tidy da...
- 猛鬼将来,胆小鬼误点。 夏日透心凉的精神冰饮,吓出冷汗的简书灵异故事精选。 招收管理员且接受投稿,欢迎投稿你的灵异...