2017-12-18 4 views
0

넓은 데이터 프레임 ('병합'이라고 함)을 긴 데이터 프레임으로 변환하려는 목적으로 R 코드를 Rstudio에 실행했습니다.넓은 데이터 프레임을 긴 형식으로 변환하기 위해 내 R 코드에 어떤 문제가 있습니까?

> 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 

나는 다음과 같은 출력 후 해요 : 나는 시도

Description Month RN 
    2017 (A)  Jan  5980 
    2017 (P)  Jan  5762 
    2017 (A)  Feb  5341 
    2017 (P)  Feb  5275 
    ...   ...  ... 

제 (하지만 성공) 다음

library(reshape2) 
merged_long <- melt(data=merged, 
       id.vars="Description", 
       variable.name="Month", 
       value.name="RN") 

나는 다음과 같은 오류 메시지가 받고 있어요 :

Error: id variables not found in data: Description 

내가 뭘 잘못하고 있니? ?

+4

글쎄, 오류가 매우 분명하다. 'merged' 데이터 프레임에'Description' 변수가 없습니다. '2017 (A), 2017 (P)'가 두껍게 보인다. – Sotos

+0

고마워, 알았다. – user3115933

답변

0

@Sotos가 주석에서 언급했듯이 merged 데이터 세트의 rownames에있는 데이터는 녹은 데이터 세트의 관찰을 고유하게 식별하는 데 필요합니다. 녹은 데이터 세트에 rownames를 포함 시키려면 코드에 다음을 추가하십시오.

merged$Description <- rownames(merged) 

그러면 원래 코드에서 예상되는 결과를 얻을 수 있습니다.

library(reshape2) 
merged_long <- melt(data=merged, 
       id.vars="Description", 
       variable.name="Month", 
       value.name="RN") 
0

데이터의 성격을 고려하여 가장 쉬운 방법은 melt(as.matrix(...))입니다. 데이터가 이미 matrix 인 경우 as.matrix 부분을 생략하십시오.

melt(as.matrix(mydf)) 

당신은 같은 시간에 열 이름을 변경 setNames를 사용할 수 있습니다

setNames(melt(as.matrix(mydf)), c("Description", "Month", "RN")) 
# Description Month RN 
# 1  2017 (A) Jan 5980 
# 2  2017 (P) Jan 5762 
# 3  2017 (A) Feb 5341 
# ......................... 
# ......................... 
# 23 2017 (A) Dec 5356 
# 24 2017 (P) Dec 5630 
관련 문제