2012-02-25 8 views
4

reshape2 패키지를 사용하여 일부 데이터를 길게에서 길게 변환하려고하지만 해결할 수 없었던 오류가 발생합니다. 아래 예에서 실제 데이터와 유사한 가짜 데이터를 만들었습니다. 각 "subj"주어진 "ID"번호에 대한 해당 제목의 모든 "크레딧"의 합계를 포함하는 열로 변환 할 싶습니다.R에서 reshape2 패키지로 dcast 오류를 해결하는 방법은 무엇입니까?

library(reshape2) 

# 가짜 데이터를 작성하고 새 열
#과의 합으로 "흔들림 감지"의 값으로,

ID = rep(c(100,101,102,103), each=5) 
subj = rep(c("CHEM","ENGL","HIST","MATH"), 5) 
credits = rep(3, 20) 
df = data.frame(ID, subj, credits) 

# 넓은 긴에서 변환 데이터 프레임으로 바꿀 각 "흔들림 감지"여기

df.wide = dcast(df, ID ~ subj, value.var=credits, fun.aggregate=sum) 

에 대한 값으로 "크레딧"나는 내가 dcast 명령을 실행할 때 얻으려고 내용은 다음과 같습니다

나는 dcast 통화에서 "fun.aggregate = 합계"를 제거하면
Error in .subset2(x, i, exact = exact) : 
recursive indexing failed at level 2 

내가 같은 오류를 얻을 : 나는 위의 코드를 실행하면
ID CHEM ENGL HIST MATH 
100  6  3  3  3 
101  3  6  3  3 
[and so on for each value of ID] 

여기에 실제로 얻을 오류입니다.

: I 샘플을 (사용 "크레딧") (대신 렙()의) 함수에 대한 값을 생성하고 (fun.aggregate = 합없이) dcast 부르면

또한, I는 다음 오류

Error in .subset2(x, i, exact = exact) : 
no such index at level 1 

문제없이 이전에 비슷한 dcast 명령을 실행 해 보았습니다. 내가 이마를 때리고 "해결책"을 볼 때 "doh"라고 외칠 것 같아요.하지만 막혀 있습니다.

답변

6

그냥 따옴표로 크레딧을 넣어 :

df.wide = dcast(df, ID ~ subj, value.var="credits", fun.aggregate=sum) 
df.wide 
    ID CHEM ENGL HIST MATH 
1 100 6 3 3 3 
2 101 3 6 3 3 
3 102 3 3 6 3 
4 103 3 3 3 6 
+0

당신이 http://stackoverflow.com/questions/18882475/r-how-to-get-something-like-adjacency-matrix를 보라 수 - 교차 가치 - of/18883106 # 18883106 및 일부 수정 제안? – andi

관련 문제