【发布时间】:2018-11-09 06:24:51
【问题描述】:
我有一个数据框 dfSub,里面有许多参数。这是基于每小时的能源使用数据。我需要按小时对数据进行排序,例如每小时从数据框中获取所有能量值。因此,我希望每小时有 24 列的数据框,行充满能量值。
小时指定为 1:24,在数据框中链接为 dfSub$hr。 热量是 dfSub$heat
我构建了一个for循环并尝试使用cbind保存,但它不起作用,错误消息是关于行和列的大小不同。
我打印结果并在屏幕上看到它们,但无法保存为 d(dataframe)
代码如下:
d = NULL
for (i in 1:24) {
subh= subset(dfSub$heat, dfSub$hr == i)
print(subh)
d = cbind(d, as.data.frame(subh))
}
附加功能不适用,因为我不知道每个小时的预期热值长度。
感谢任何帮助。
dfSub 的一部分
hr wk month dyid wend t heat
1 2 1 1 0 -9.00 81
2 2 1 1 0 -8.30 61
3 2 1 1 0 -7.80 53
4 2 1 1 0 -7.00 51
5 2 1 1 0 -7.00 30
6 2 1 1 0 -6.90 31
7 2 1 1 0 -7.10 51
8 2 1 1 0 -6.50 90
9 2 1 1 0 -8.90 114
10 2 1 1 0 -9.90 110
11 2 1 1 0 -11.70 126
12 2 1 1 0 -9.70 113
13 2 1 1 0 -11.60 104
14 2 1 1 0 -10.00 107
15 2 1 1 0 -10.20 117
16 2 1 1 0 -9.00 90
17 2 1 1 0 -8.00 114
18 2 1 1 0 -7.80 83
19 2 1 1 0 -8.10 82
20 2 1 1 0 -8.20 61
21 2 1 1 0 -8.80 34
22 2 1 1 0 -9.10 52
23 2 1 1 0 -10.10 41
24 2 1 1 0 -8.80 52
1 2 1 2 0 -8.70 44
2 2 1 2 0 -8.40 50
3 2 1 2 0 -8.10 33
4 2 1 2 0 -7.70 41
5 2 1 2 0 -7.80 33
6 2 1 2 0 -7.50 43
7 2 1 2 0 -7.30 40
8 2 1 2 0 -7.10 8
预期的输出为:
hr1 hr2 hr3 hr4..... hr24
81 61 53 51 ..... 52
44 50 33 41
【问题讨论】:
-
cbind用于列,rbind用于行。你试过rbind(d, as.data.frame(subh))吗?此外,您可以使用d = dfSub[0,]使用相同的变量初始化d -
rbind 给我一列总共有 6000 行,但我需要分开 24 列
-
你能给我们看一个
dfSub的小样本吗?也许也是一个理想的输出。 -
@Tymo 您可以分享
dput(head(dfSub,30))的输出作为问题的一部分。其他人会更容易回应。当然,您不需要for-loop进行此类工作。 -
我可以通过子集来完成,但此代码旨在用于进一步研究,包括不包括每小时而是每天的时间分辨率。例如,如果我想分析 150 天循环,我相信会更好。
标签: r