Мой фрейм данных имеет несколько категориальных столбцов, я хочу сравнить каждый столбец с фиксированным столбцом и сгенерировать гистограмму с facet_grid()
. Для этого я хочу написать функцию.
library(rlang)
library(tidyverse)
qw <- structure(list(weekday = structure(c(2L, 6L, 7L, 5L, 1L, 3L,
4L, 2L, 6L, 7L, 5L, 1L, 3L, 4L, 2L, 6L, 7L, 5L, 1L, 3L, 4L, 2L,
6L, 7L, 5L, 1L, 3L, 4L, 2L, 6L, 7L, 5L, 1L, 3L, 4L), .Label = c("Friday",
"Monday", "Saturday", "Sunday", "Thursday", "Tuesday", "Wednesday"
), class = "factor"), Target = c(0, 0, 1, 1, 0, 1, 1, 1, 1, 0,
0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
1, 0, 0, 1), type = structure(c(3L, 3L, 2L, 3L, 1L, 3L, 1L, 3L,
1L, 1L, 3L, 2L, 1L, 3L, 3L, 1L, 3L, 1L, 2L, 2L, 2L, 2L, 1L, 1L,
1L, 3L, 2L, 1L, 2L, 1L, 2L, 1L, 3L, 2L, 3L), .Label = c("Advertising",
"Agriculture", "Bank"), class = "factor")), .Names = c("weekday",
"Target", "type"), row.names = c(NA, -35L), class = "data.frame")
qw %>%
group_by(type, Target) %>%
summarise(Freq = n()) %>%
ggplot(data = ., aes(x = reorder(type, -Freq), y = Freq, fill = type)) +
geom_bar(stat = 'identity') +
labs(y = "", x = "") +
facet_grid(Target ~ ., scales = "free") +
theme(legend.position = 'none')
Здесь Целевой столбец фиксирован для функций group_by()
и facet_grid()
.
Аналогичным образом я хочу сравнить с несколькими столбцами.
Для этого я написал функцию
cateby_label_graph <- function(x){
x <- syms(x)
qw %>%
group_by(!!!x, Target) %>%
summarise(Freq = n()) %>%
ggplot(data = . , aes(x = reorder(x, -Freq), y = Freq, fill = x)) +
geom_bar(stat = 'identity') +
labs(y = "", x = "") +
facet_grid(Target~., scales="free") +
theme(legend.position = 'none')
}
Вышеупомянутая функция до group_by()
работает до получения ошибки.