2017-12-18 251 views
0

我使用RStudio,我有以下從我R碼2個輸出:如何將2個時間序列數據(寬表)合併爲1個數據框(寬表)?

actual_2017 <- tail(mydata,12) 
> actual_2017 
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
2017 5980 5341 5890 5596 5753 5470 5589 5545 5749 5938 5844 5356 

> predicted_2017 <- head(pred1,12) 
> predicted_2017 
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
2017 5762 5275 5733 5411 5406 4954 5464 5536 5805 5819 5903 5630 

> str(actual_2017) 
Time-Series [1:12] from 2017 to 2018: 5980 5341 5890 5596 5753 5470 5589 5545 5749 5938 ... 

> str(predicted_2017) 
    Time-Series [1:12] from 2017 to 2018: 5763 5275 5734 5412 5407 ... 

我要合併actual_2017predicted_2017成數據幀,但保持該寬表格格式。

比方說,這是該數據幀後我:

  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
2017(A) 5980 5341 5890 5596 5753 5470 5589 5545 5749 5938 5844 5356 
2017(P) 5762 5275 5733 5411 5406 4954 5464 5536 5805 5819 5903 5630 

我怎樣才能做到這一點?另外,2017年之前我需要(A)和(P),以便表格清楚瞭解其內容。

回答

1

使用,t(轉),rbindnamesrownames等就可以實現你想要什麼:

actual_2017 <- data.frame(t(c(5980, 5341, 5890, 5596, 5753, 5470, 5589, 5545, 5749, 5938, 5844, 5356))) 
names(actual_2017) <- c("Jan", "Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") 
rownames(actual_2017) <- "2017" 
actual_2017 
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
2017 5980 5341 5890 5596 5753 5470 5589 5545 5749 5938 5844 5356 

predicted_2017 <- data.frame(t(c(5762, 5275, 5733, 5411, 5406, 4954, 5464, 5536, 5805, 5819, 5903, 5630))) 
names(predicted_2017) <- c("Jan", "Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") 
rownames(predicted_2017) <- "2017" 
predicted_2017 
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
2017 5762 5275 5733 5411 5406 4954 5464 5536 5805 5819 5903 5630 

merged <- rbind(actual_2017, predicted_2017) 
rownames(merged) <- c("2017 (A)", "2017 (P)") 
merged 
      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
2017 (A) 5980 5341 5890 5596 5753 5470 5589 5545 5749 5938 5844 5356 
2017 (P) 5762 5275 5733 5411 5406 4954 5464 5536 5805 5819 5903 5630 
+0

我得到以下輸出當我運行你的代碼: [,1] [,2] [,3] ... 2017(A)5980 5341 5890 ... 2017(P)5762 5275 5733 ... 我想這是因爲我正在合併2個ts文件。你給的例子是合併2個數據幀。 – user3115933

+0

您也可以使用數據框來處理時間序列數據。上面的代碼在代碼下給出了完全相同的輸出。我正在使用RevoREnterprise 7.3.0。所以,你應該用我使用的數據框方式得到完全相同的輸出。我將答案轉換爲「可以複製粘貼」類型。所以,上面的代碼解決了這個問題。 –

+0

好吧,明白了!謝謝。 – user3115933

1

希望這有助於!

#sample data (I cooked my own sample data, hope you don't mind it!) 
actual_2017 <- ts(tail(AirPassengers,12), start = 2017, frequency = 12) 
predicted_2017 <- ts(head(AirPassengers, 12), start = 2017, frequency = 12) 

#merge both timeseries data 
df <- rbind(actual_2017, predicted_2017) 
colnames(df) <- month.abb 
rownames(df) <- gsub("(^\\w).*(\\d{4}$)","\\2 (\\1)",rownames(df)) 
df 

輸出是:

  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
2017 (a) 417 391 419 461 472 535 622 606 508 461 390 432 
2017 (p) 112 118 132 129 121 135 148 148 136 119 104 118 
相關問題