2013-05-27 60 views
0

我有兩個等長的時間序列數據匹配向量:價格(x)和小時(h)。小時從0-23開始。我的小時變量是我的虛擬變量(或因子/水平變量,我猜它在R中被調用)。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. 
+1

即使你用的話重複的例子,預計清透。通常,解決方案是通過使用我們擁有的工具並「修補」您所擁有的數據來實現的。在仔細檢查數據之前,數據結構通常會顯得很清晰。 –

回答

2

由於您沒有提供可重複的示例,因此不清楚數據的存儲方式。我假設你每個小時都有單獨的變量1。

通常,最好將hourxx變量放在列表中以執行計算。 OP澄清後

lapply(lapply(ls(pattern='hour.*'),get),mean) 

編輯

例如,這將意味着計算所有小時

您shuld創建一個新的變量小時的間隔來區分。喜歡的東西:

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