2011-10-14 3 views
3

재발생 문제가 있습니다 - 사과드립니다!plyr 및 ldply 사용시

'id'와 'year'에 따라 나열된 야구 데이터 (plyr 패키지의 데이터)를 갖고 싶습니다.

1. mylist1 <- dlply(baseball, .(id, year), identity) 

하고 목록이 구성되는 방식에

2. mylist2 <- dlply(baseball, .(id), dlply, .(year), identity) 

하지만, 데이터 프레임에 다시 목록을 얻기가 mylist1 '와 잘 작동 : 중 하나에 따라 목록을 만드는 사이에 차이가있다 '.

Error in list_to_dataframe(res, attr(.data, "split_label")): Result must be all atomic, or all data frames 

내가 R에 안돼서,이 오류 메시지가 많이하지 않습니다

mydf1 <- ldply(mylist1) 

하지만 다음과 같은 오류 메시지를 제공합니다 'mylist2'

mydf2 <- ldply(mylist2) 

나 한테 감각이있어.

데이터 조작이 꽤 필요하기 때문에 방법 2에 따라 자체 데이터 프레임을 분할하고 싶습니다. 내 질문은 : 어떻게이 목록을 데이터 프레임에 병합 할 수 있습니까? do.call(rbind, do.call(rbind,...의 대안이 있습니까?

어떤 도움을 주셔서 감사합니다!

+1

왜이 방식으로 데이터를 분석 할 필요합니까 ? 나는 이런 식으로해야한다고 생각하지 않는다. 어쩌면 그것은 문제에 대한 솔루션을 설계 할 때 다시 조립할 수없는 데이터 구조를 얻지 않으려 고하기 때문일 수 있습니다. 필자가 선호하는 작업 방식은 가능할 때마다 data.frames를 사용하는 것입니다. 즉, 환경 설정에 따라'ddply'를 사용하십시오. – Andrie

+0

당신이 옳을 수도 있지만, 나는 매 시간마다 누적 된 기상 데이터를 가지고 일한다. 나는 각 스테이션, 앙상블 멤버, 날짜 및 예측 시간에 대한 시계열을 가지고 있으며 각 시계열에 대해 누적 값이 아닌 시간별 값을 가져와야합니다. Sisse – Sisse

+0

'ddply'를 사용하면 가능합니다. 데이터 구조를 알지 못하면 추측을 두 배로하기가 어렵지만, 모든 데이터를 하나의 거대한'data.frame'으로 결합하고 올바른 인덱스를 확보하면 작동해야합니다. 분석에 도움이됩니다. – Andrie

답변

5

@Andrie는 이것이 이상한 구조라는 것에 동의합니다. 그러나 나는 당신이 이런 식으로하는 특별한 이유가 있다고 가정합니다.

dlply을 사용하여 두 번 걸 렸으므로 mylist2을 생성하기 위해 다시 넣기 위해 ldply이라는 두 번의 호출이 필요합니다.

mydf2 <- ldply(mylist2, ldply) 

이 복원 baseball (모듈 순서)

> class(mydf2) 
[1] "data.frame" 
> all(dim(mydf2) == dim(baseball)) 
[1] TRUE 
+0

대단히 감사합니다! – Sisse

관련 문제