2012-02-03 3 views
4

이것은 간단해야하지만 어떤 이유로 나는 막혔습니다. 나는에서 reshape2 함수를 사용하여 데이터를 녹이고 추가 R

A <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(1)) 
B <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(1)) 
C <- data.frame(x=rnorm(10), y=rnorm(10), z=rnorm(1)) 

method1 <- list(A=A,B=B,C=C) 
method2 <- list(A=A,B=B,C=C) 

biglist <- list(method1, method2) 

과 같은 데이터를 가지고 그리고 난 내 X/Y/Z를 축소하기 때문에 아주 내가 원하는 걸하지 않습니다

x y z dataset method 
- - - ---  ----- 
1 1 1 A   1 
1 0 2 A   1 
1 0 3 A   1 
1 1 3 A   1 
1 1 1 B   1 
1 0 2 B   1 
1 0 3 B   1 
1 1 3 B   1 
1 1 1 C   1 
1 0 2 C   1 
1 0 3 C   1 
1 1 3 C   1 
1 1 1 A   2 
1 0 2 A   2 
1 0 3 A   2 
1 1 3 A   2 
1 1 1 B   2 
1 0 2 B   2 
... 

용융처럼 보이도록 데이터를 포맷하고 싶습니다 가변 표제. 그렇지 에는 X, Y, Z 몇몇의 포인트 좌표 끝날 -

답변

6

내 data.frames 기본 키, 예 식별자 열 또는 고유 한 값을 갖는 열 있어야 관련없는 행 x이 그러한 열이라고 가정합니다.

결과 데이터 프레임이 너무 수직 인 경우 melt, 뒤에 dcast으로 전화해야 할 수도 있습니다.

library(reshape2) 
d <- melt(biglist, id.vars="x") 
d <- dcast(d, L1 + L2 + x ~ variable) 
+1

브릴리언트, I는 I 단지 깜빡 생각 id.vars 이해 결코/: 약간 클리너 용액 대한 방법 : d <-하기 (biglist, id.vars의 = C를 ("X"를 용융, "Y", "Z ")) – cboettig

관련 문제