我有两个同样长的时间序列数据匹配向量:Price(x)和hour(h)。小时从0到23。我的小时变量是我的虚拟变量(或因子/水平变量,我猜它在R中调用)。
现在我已经定义了24个不同的虚拟变量,每小时我输入我的虚拟变量。因此,例如生成24个图来查看或计算24个平均值等我输入: plot.ts(hour1)#等等所有24。
我想尽可能轻松地为所有24个变量执行此操作?所以我可以运行很多不同的计算。例如,如何在不制作24行代码的情况下计算所有24个虚拟变量的均值,更改每个虚拟变量?
编辑:对不起,以为这两个载体很清楚。示例: 1. Price Hour
2. 8 0
3. 12 1
4. 14 2
5. 16 3
6. 18 4
7. 20 5
8. 22 6
9. 24 7
10. 26 8
11. 28 9
12. 24 10
13. 26 11
14. 23 12
15. 23 13
16. 23 14
17. 14 15
18. 19 16
19. 25 17
20. 26 18
21. 28 19
22. 30 20
23. 33 21
24. 24 22
25. 10 23
26. 14 0
27. 12 1
28. 13 2
29. x ect.
答案 0 :(得分:2)
目前尚不清楚您的数据是如何存储的,因为您没有提供可重现的示例。我假设每个小时都有单独的变量1。
通常,最好将hourxx
变量放在列表中以执行计算。
例如,这将计算所有小时的平均值:
lapply(lapply(ls(pattern='hour.*'),get),mean)
在OP澄清后编辑:
您可以创建一个新变量来区分小时间隔。类似的东西:
dat <- data.frame(Price=rnorm(24*5),Hour=rep(0:23,5))
dat$id <- cumsum(c(0,diff(dat$Hour)==-23))
然后使用ply
包,您可以按id:
library(plyr)
ddply(dat,.(id),summarise,mPrice=mean(Price))
id mPrice
1 0 0.2999602
2 1 -0.2201148
3 2 0.2400192
4 3 -0.2087594
5 4 0.1666915