2015-04-02 63 views
1

我正在試圖用dplyr和ts包製作月度因子變量。從ts(rnorm)對象中總結月度(季節性)因素

這意味着:

  1. 就拿個月的平均值ÿ年
  2. 總和所有的^ 1秒(十二每個月一)
  3. 除以1 2每個月< - 這是你那個月的因素。

所以,如果每個月有它的數值,三月的因素是

3 /總和(1:12) [1] 0.03846154

或3.8%。

我覺得這應該是非常簡單的,但我起來搞亂的東西,不知道爲什麼(也許是中期而言):

x <- ts(matrix(rnorm(300,100,3)), start = c(1961,1), frequency = 12) y 
y <- x %>% summarise(month_factor = for (i in z) mean(i)) 
Error in UseMethod("summarise_") : no applicable method for 'summarise_' applied to an object of class "ts" 

我知道這第一次努力是非常不合,但我遇到了不能使用mutate的複合問題,因爲月份是我在上面構建的ts對象x中的列。

+1

試着讓它成爲矩陣。 – 2015-04-02 00:46:39

+0

非常遺憾。抱歉。 – d8aninja 2015-04-02 00:47:09

+2

沒有羞恥的意圖。第一次遇到類似問題時,我花了幾分鐘時間才找到該解決方案。 – 2015-04-02 00:48:15

回答

1

例如:

x <- ts(matrix(rnorm(300,100,3)), start = c(1961,1), frequency = 12) 

正如BondedDust建議,你可以轉換x到一個矩陣:

m <- matrix(data = as.numeric(x), ncol = 12, byrow = TRUE) 

受季節平均調整:

m = m/matrix(colMeans(m, na.rm = TRUE), ncol = 12, nrow=nrow(m), byrow = TRUE) 

轉換回ts

y = ts(data = as.numeric(m), start = start(x), frequency = 12) 
+0

@帕斯卡見http://meta.stackoverflow.com/questions/251597/question-with-no-answers-but-issue-solved-in-the-comments – RockScience 2015-04-02 03:30:36