2014-01-10 42 views
1

我試圖使用read.zoodata.frame轉換爲zoo對象。除了原始索引僅包含年份(無月或無天)以及當它們出現時我閱讀它時,它似乎一切正常。read.zoo在指定格式爲「%Y」時添加月份和日期

有沒有辦法用索引創建新的對象只有年份?

test.df3 <- data.frame (Country = rep (c (1, 5000), each = 10), 
         Year = factor(rep(1990:1999, 2)), 
         Values = sample(x = 1:20, size = 20, replace = TRUE), 
         Weights = sample (x = seq (0,50,10), size = 20, 
              replace =TRUE) 
         ) 
stuff <- read.zoo (test.df3, format = "%Y", index.column = 2) 

這就是我得到:

> head(stuff) 
      Country Values Weights 
1990-01-10  1  2  50 
1990-01-10 5000  19  0 
1991-01-10  1  10  30 
1991-01-10 5000  3  20 

這是我希望得到的:

> head(stuff) 
      Country Values Weights 
1990    1  2  50 
1990   5000  19  0 
1991    1  10  30 
1991   5000  3  20 

回答

2

指定format並沒有FUNtz導致啓發式假設你想要一個"Date"類索引。指定FUN=identity沒有轉換,並省略format=。另外,似乎有兩個國家的時間序列混合在一起,所以我們可以使用split=將它們分成各自的系列。

read.zoo(test.df3, index = "Year", split = "Country", FUN = identity) 

這給:

 Values.1 Weights.1 Values.5000 Weights.5000 
1990  6  50   2   30 
1991  14  20   7   50 
1992  7  40   6   0 
1993  18  30   17   20 
1994  10  50   13   0 
1995  3   0   17   40 
1996  4  20   16   40 
1997  20  20   18   20 
1998  9  20   16   30 
1999  20   0   15   30 
+0

正確的!這只是一個玩具,而我將不得不用更大的數據集來執行相同的任務,這個數據集由許多國家組成。然後我需要使用rollapply來計算一些滾動方式,因此如果有辦法將它們全部分成兩列,然後執行後續的滾動方式,那將是有利的,但我不確定它是否可行。 –

+0

如果您想以長形式表示它,那麼它不是一個時間序列,所以動物園(這是時間序列基礎結構的包)不適用。使用data.frame或data.table。 –

相關問題