2017-01-29 2 views
0

С кадра данных DF, как показано нижеR фрейм данных - объединения нескольких столбцов одновременно

---------------------- 
a  | b | c 
------+-------+------- 
true | true | true 
false | true | false 
false | false | false 
true | true | false 

мне нужно найти% от "true" для каждого из столбцов, а, Ь и с, как кадр данных, такой, что его можно использовать в ggplot. Как это сделать?

Примечание: - "true" не логический TRUE

ответ

4

Мы перекраивать «широкие» на «длинный» формат с помощью gather, затем найти mean «истинного» в каждую «группы», и использовать geom_bar сделать бар участок

library(dplyr) 
library(tidyr) 
library(ggplot2) 
library(scales) 
gather(df1, group, value) %>% 
     group_by(group) %>% 
     summarise(perc= mean(value=="true")) %>% 
     ggplot(., aes(x=group, y=perc)) + 
       geom_bar(stat="identity") + 
       scale_y_continuous(labels = percent) 

Примечание: Предположит, что столбцы character класса

+0

Это хорошо работает, заметит, что 'groups' сортируется в алфавитном порядке - есть ли способ избежать этого? – user3206440

+0

@ user3206440 Вы можете использовать 'group_by (group = factor (group, levels = lvls))%>%' – akrun

Смежные вопросы