我在 R 中有一个 3x168 的数据框。每行有三列 - 日、小时和值。日和小时对应星期几,小时列对应当天的小时,值对应我关心的值。
我希望转换这些数据,使其存在于 24x7 矩阵中,行(或列)对应于特定日期,列(或行)对应于特定小时。
在 R 中执行此操作的最有效方法是什么?我已经能够将一些杂乱的命令串放在一起来接近一些东西,但我觉得有一个非常有效的解决方案。
示例起始数据:
> print(data)
weekday hour value
1 M 1 1.11569683
2 M 2 -0.44550495
3 M 3 -0.82566259
4 M 4 -0.81427790
5 M 5 0.08277568
6 M 6 1.36057839
...
156 SU 12 0.12842608
157 SU 13 0.44697186
158 SU 14 0.86549961
159 SU 15 -0.22333317
160 SU 16 1.75955163
161 SU 17 -0.28904472
162 SU 18 -0.78826607
163 SU 19 -0.78520233
164 SU 20 -0.19301032
165 SU 21 0.65281161
166 SU 22 0.37993619
167 SU 23 -1.58806896
168 SU 24 -0.26725907
我希望得到以下类型的东西:
M .... SU
1 1.11569683
2 -0.44550495
3 -0.82566259
4 -0.81427790
5
6
.
.
.
19
20
21 0.65281161
22 0.37993619
23 -1.58806896
24 -0.26725907
您可以通过这种方式获得一些实际的样本数据:
weekday <- rep(c("M","T","W","TH","F","SA","SU"),each=24)
hour <- rep(1:24,7)
value <- rnorm(24*7)
data <- data.frame(weekday=weekday, hour=hour, value=value)
谢谢!