2014-01-08 111 views
1

我和結構的data.frame:R-語言,轉換data.frame時間序列

> str(MSK) 
'data.frame': 14685 obs. of 3 variables: 
$ code : Factor w/ 423 levels "100 975","101 479",..: 281 281 281 281 281 281 281 281 281 281 ... 
$ period: Date, format: "2010-01-01" "2010-02-01" "2010-03-01" "2010-04-01" ... 
$ sales : num 515 195 414 410 551 18 373 74 62 313 ... 

我需要將此數據轉換爲一個矩陣或行另一data.frame:「期「和列:」代碼「。 有些「代碼」時間序列沒有完整。缺失值必須等於NA。

例如,我有一個數據是這樣的:

code data sales 
303 1day 200 
303 2day 300 
303 3day 400 
404 2day 250 
404 3day 350 
606 2day 167 

我需要得到:

 303 404 606 
1day 200 NA NA 
2day 300 250 167 
3day 400 350 NA 

這不是很難直接做到這一點,但我想知道的權利轉換方式。

對不起,我的母語是俄語,我是一個在學校的窮學生。

感謝您的關注。 =)

+2

你可以做的比花接下來的30分鐘閱讀在該_ample_文檔(優秀的和廣泛使用的)差多少[** **動物園(HTTP: //cran.rstudio.com/package=zoo)包...回答了這個問題和其他問題,並做得很好。 –

+0

@DirkEddelbuettel,我補充說明。動物園可以這樣做嗎?如果不這樣做,那還能有什麼? – maruschin

回答

2

reshape2使用dcasthttp://cran.r-project.org/web/packages/reshape2/reshape2.pdf

my_df <- data.frame(
         period=c("1day","2day","3day","2day"), 
         code=c(303,303,304,305), 
         sale=c(100,200,300,400)) 
library(reshape2) 
my_df2 <- dcast(my_df,period~code,value.var="sale") 

輸出:

> my_df 
     period code sale 
    1 1day 303 100 
    2 2day 303 200 
    3 3day 304 300 
    4 2day 305 400 

    > my_df2 
     period 303 304 305 
    1 1day 100 NA NA 
    2 2day 200 NA 400 
    3 3day NA 300 NA 
+0

我添加了一個解釋。你的代碼不工作,因爲我看到,但感謝reshape2和融化,我試圖閱讀手冊。 – maruschin

+0

謝謝,這是工作。 – maruschin