2011-02-23 7 views
1

스택 교환의 통계 부분의 재 게시입니다. 나는 그곳에 질문을했고, 나는이 질문을 여기에서하도록 권고 받았다. 그래서 여기 있습니다.데이터 프레임 목록의 여러 상자 그림을 어떻게 결합합니까?

데이터 프레임 목록이 있습니다. 각 데이터 프레임은 유사한 구조를가집니다. 각 데이터 프레임에는 숫자로 된 열이 하나뿐입니다. 내 데이터 요구 사항 때문에 각 데이터 프레임의 길이가 서로 다른 것이 중요합니다. 다른 열의 속성을 기준으로 분류 된 숫자 값의 상자 그림을 만들고 싶습니다. 그러나 boxplot에는 모든 데이터 프레임의 정보가 포함되어야합니다.

분명히 묻기를 바랍니다. 조만간 샘플 데이터를 게시하겠습니다.

답변

6

샘,

나는 이것이이 this 질문에 대한 후속 조치입니다 겠지? 어쩌면 샘플 데이터가 사용자의 요구 사항 ("다른 열의 속성 이상으로 분류 됨")의 뉘앙스를 나타낼 수도 있지만 여기에서는 동일한 melting 접근 방식을 사용해야합니다. melt() 기능과 기본 R의 상자 그림을 사용

library(ggplot2) 
library(reshape2) 
#Fake data 
a <- data.frame(a = rnorm(10)) 
b <- data.frame(b = rnorm(100)) 
c <- data.frame(c = rnorm(1000)) 

#In a list 
myList <- list(a,b,c) 


#In a melting pot 
df <- melt(myList) 

#Separate boxplots for each data.frame 
qplot(factor(variable), value, data = df, geom = "boxplot") 
#All values plotted together as one boxplot 
qplot(factor(1), value, data = df, geom = "boxplot") 
+1

목록을 녹여 줄 수 없습니까? – hadley

+1

@ 할리 - 사실대로 할 수 있습니다. 나는 이전에리스트와 함께'melt '를 특별히 사용하지 않았기 때문에 팁을 주셔서 감사합니다. 그에 따라 수정됩니다. – Chase

+0

실제로 그렇습니다. 그 질문에 대한 후속 조치입니다. 편집 해 주셔서 감사합니다. – Sam

1
a<-data.frame(c(1,2),c("x","y")) 
b<-data.frame(c(3,4,5),c("a","b","c")) 
boxplot(c(a[1],b[1])) 

"1"을 사용하면 데이터 프레임에서 원하는 열을 선택할 수 있습니다.

데이터 프레임은 다른 열 길이를 가질 수 없지만 (각 열에 대해 동일한 수의 행을 가져야 함) boxplot에 여러 데이터 세트를 병렬로 표시하도록 지시 할 수 있습니다.

+0

이 목록에서 직접 플롯하는 경우이 솔루션은 작동하지 않습니다. –

0

:

#Fake data 
a <- data.frame(a = rnorm(10)) 
b <- data.frame(b = rnorm(100)) 
c <- data.frame(c = rnorm(100) + 5) 

#In a list 
myList <- list(a,b,c) 

#In a melting pot 
df <- melt(myList) 

# plot using base R boxplot function 
boxplot(value ~ variable, data = df)