2016-10-01 6 views
0

나이, 정보, 대상 및 Info와 함께 하나의 핫 인코딩 된 열로 변환 된 데이터 프레임 (df2)이 있습니다.필터링으로 다른 열 ggplot2 세로로 스택 됨

library(qdapTools) 
require(reshape) 

mydf <- structure(list(Age = c(99L, 10L, 40L, 15L), 
         Info = c("good, bad, sad", "nice, good, happy, joy", "NULL", "okay, nice, good, wild, go"), 
         Target = c("Boy", "Girl", "Boy", "Boy")), 
        .Names = c("Age", "Info", "Target"), 
        row.names = c(NA, 4L), 
        class = "data.frame") 

df_with_ohe <- cbind(mydf, mtabulate(strsplit(mydf$Info, ", "))) 

mydf 
df_with_ohe 

added_cols = names(df_with_ohe)[length(names(mydf))+1:length(names(df_with_ohe))] 

[1] "bad" "go" "good" "happy" "joy" "nice" "NULL" "okay" "sad" "wild" 

그리고이

Age      Info Target bad go good happy joy nice NULL okay sad wild 
1 99    good, bad, sad Boy 1 0 1  0 0 0 0 0 1 0 
2 10  nice, good, happy, joy Girl 0 0 1  1 1 1 0 0 0 0 
3 40      NULL Boy 0 0 0  0 0 0 1 0 0 0 
4 15 okay, nice, good, wild, go Boy 0 1 1  0 0 1 0 1 0 1 

을 DF2되고 난 그렇게에 "나쁜"및 위해, 즉 "좋은"에 대한 플롯 다른 정보 유형에 대한 연령의 분포를 플롯합니다. 예를 들면 :

# considering on "good" column 

df = subset(df_with_ohe, df_with_ohe[,"good"] == 1) 

ggplot(df, aes(Target, Age)) + geom_boxplot() 

Distribution of Age versus "Good" column

어떻게 하나의 플롯의 한 핫 인코딩 기능을 사용하여 모든 added_cols 열에 대한 이러한 플롯을, 패싯합니까? 아마도 패싯을 사용하고 있을까요?

답변

1

어때?

df <- do.call(rbind, apply(mydf, 1, function(x) cbind.data.frame(Age=x[1], 
            Type=unlist(strsplit(x[2], split=', ')), 
            Target=x[3]))) 
df$Age <- as.integer(as.character(df$Age)) 
ggplot(df, aes(Target, Age)) + 
    geom_boxplot() + 
    facet_wrap(~Type, scales = 'free') 

enter image description here