Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:计算多个因素/水平(虚拟变量)_R_R Factor - Fatal编程技术网

R:计算多个因素/水平(虚拟变量)

R:计算多个因素/水平(虚拟变量),r,r-factor,R,R Factor,我有两个等长的时间序列数据匹配向量:价格(x)和小时(h)。时间从0点到23点。我的小时变量是我的虚拟变量(或者因子/级别变量,我猜它在R中被调用) 现在我已经定义了24个不同的虚拟变量,每小时我都会输入虚拟变量。例如,生成24个图来查看或计算24个平均值等,我会键入: plot.ts(hour1)#以此类推 我想尽可能简单地对所有24个变量执行此操作?所以我可以进行很多不同的计算。例如,我如何计算所有24个虚拟变量的平均值,而不生成24行代码,更改每个虚拟变量 编辑:对不起,我想这两个向量是清

我有两个等长的时间序列数据匹配向量:价格(x)和小时(h)。时间从0点到23点。我的小时变量是我的虚拟变量(或者因子/级别变量,我猜它在R中被调用)

现在我已经定义了24个不同的虚拟变量,每小时我都会输入虚拟变量。例如,生成24个图来查看或计算24个平均值等,我会键入: plot.ts(hour1)#以此类推

我想尽可能简单地对所有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.

由于您没有给出可复制的示例,因此不清楚您的数据是如何存储的。我假设每个小时都有单独的变量

通常,最好将
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))

即使你非常清楚的话,重复的例子是预期的。通常,解决方案是通过使用我们现有的工具和“修补”您所获得的数据来达成的。通常,在仔细检查之前,数据的结构可能会显得清晰。
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