Сделайте рамку данных.
df <- data.frame(idplaces = c("201220","201321","201422","201525"),
Amex = c(0,1,0,1),
visa = c(1,1,01,1),
mastercard = c(0,1,0,1),
cash = c(1,1,1,1))
Во-первых, вам нужно переформатировать данные (что часто бывает в случае ggplot2). Способ переформатировать его зависит от того, как вы собираетесь его запечатлеть. Я буду использовать geom_bar()
, который по умолчанию имеет высоту баров, представляет количество случаев в кадре данных. Поэтому я переформатирую на длинный фрейм данных, используя gather
из пакета tidyr, а затем отфильтруйте все случаи, когда ресторан не принимает этот метод. Результирующий блок данных будет содержать столбцы для идентификатора restuarant и одну строку для каждого метода оплаты, который принимает каждый ресторан.
> df_long <- df %>%
+ gather("method", "accepts", -idplaces, factor_key = TRUE) %>%
+ filter(accepts == 1)
> df_long
idplaces method accepts
1 201321 Amex 1
2 201525 Amex 1
3 201220 visa 1
4 201321 visa 1
5 201422 visa 1
6 201525 visa 1
7 201321 mastercard 1
8 201525 mastercard 1
9 201220 cash 1
10 201321 cash 1
11 201422 cash 1
12 201525 cash 1
Для построения с методами на оси х, установить x=method
в aes()
.
> ggplot(df_long, aes(x=method)) +
+ geom_bar()

'barplot (colSums (г [-1]))' – user20650
Спасибо! Но, я должен создать его с ggplot2, и когда я запустил этот – Lilian
ggplot() + geom_bar (x = colSums (платеж [, -1])) – Lilian