2017-12-18 7 views
0

나는 RStudio를 사용하고 난 내 R 코드에서 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 (전치), rbind, names, rownames 등 당신이 원하는 것을 얻을 수 있습니다 나는 다음과 같은 출력을 얻을

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 파일을 병합하고 있기 때문에 그럴 것 같습니다. 당신이 준 예제는 두 개의 데이터 프레임을 병합하는 것입니다. – user3115933

+0

데이터 프레임과 함께 시계열 데이터를 처리 할 수도 있습니다. 위의 코드는 아래 코드와 똑같은 출력을 제공합니다. RevoREnterprise 7.3.0을 사용하고 있습니다. 따라서, 필자가 사용한 데이터 프레임과 똑같은 출력을 얻어야합니다. 나는 "copy-pasteed"타입으로 변환했다. 그래서, 위의 코드는 문제의 문제를 해결합니다. –

+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