Reshape2: data.frame 从长到宽
Reshape2: data.frame from long to wide
我需要帮助将长 df 转换为宽 df。
我认为这是一个基本问题,但我被卡住了。
在阅读“reshape2”之后,我使用了这个:
dcast(a, day + sessions ~ hour)
以及所有可能的变体。
但是没有得到预期的结果。
这是我的起始数据框"a":
头(一)
day hour sessions
1 Sun 0 785
2 Sun 1 354
3 Sun 2 190
4 Sun 3 121
5 Sun 4 105
6 Sun 5 110
预期结果:
我需要这种格式:
day 0 1 2 3 ... 23
1 Sun 123 454 23 43 ... 56
2 Mon 56 354 778 76 ....89
3 Thur 75 190 653 533 ....87
4 Wen 3 121 45 54 ....77
5 Tue 4 105 21 44 ....52
6 Fri 5 110 12 21 ....51
df 的 str "a":
'data.frame': 168 obs. of 3 variables:
$ day : Ord.factor w/ 7 levels "Sun"<"Mon"<"Tues"<..: 1 1 1 1 1 1 1 1 1 1 ...
$ hour : Factor w/ 24 levels " 0"," 1"," 2",..: 1 2 3 4 5 6 7 8 9 10 ...
$ sessions: num 785 354 190 121 105 110 185 258 252 416 ...
正如@ialm 在评论中提到的,这可以通过使用 reshape2
包轻松完成。
我不知道你的数据框到底是什么样子,因为你的例子有点奇怪,但是:
library(reshape2)
a <- data.frame(
day = c('Sun', 'Sun', 'Mon', 'Mon'),
hour = c(1, 2, 1, 2),
sessions = c(354, 190, 121, 105))
dcast(a, day ~ hour)
...应该给你
day 1 2
1 Mon 121 105
2 Sun 354 190
我需要帮助将长 df 转换为宽 df。
我认为这是一个基本问题,但我被卡住了。
在阅读“reshape2”之后,我使用了这个:
dcast(a, day + sessions ~ hour)
以及所有可能的变体。
但是没有得到预期的结果。
这是我的起始数据框"a":
头(一)
day hour sessions
1 Sun 0 785
2 Sun 1 354
3 Sun 2 190
4 Sun 3 121
5 Sun 4 105
6 Sun 5 110
预期结果: 我需要这种格式:
day 0 1 2 3 ... 23
1 Sun 123 454 23 43 ... 56
2 Mon 56 354 778 76 ....89
3 Thur 75 190 653 533 ....87
4 Wen 3 121 45 54 ....77
5 Tue 4 105 21 44 ....52
6 Fri 5 110 12 21 ....51
df 的 str "a":
'data.frame': 168 obs. of 3 variables:
$ day : Ord.factor w/ 7 levels "Sun"<"Mon"<"Tues"<..: 1 1 1 1 1 1 1 1 1 1 ...
$ hour : Factor w/ 24 levels " 0"," 1"," 2",..: 1 2 3 4 5 6 7 8 9 10 ...
$ sessions: num 785 354 190 121 105 110 185 258 252 416 ...
正如@ialm 在评论中提到的,这可以通过使用 reshape2
包轻松完成。
我不知道你的数据框到底是什么样子,因为你的例子有点奇怪,但是:
library(reshape2)
a <- data.frame(
day = c('Sun', 'Sun', 'Mon', 'Mon'),
hour = c(1, 2, 1, 2),
sessions = c(354, 190, 121, 105))
dcast(a, day ~ hour)
...应该给你
day 1 2
1 Mon 121 105
2 Sun 354 190