С некоторой помощью чудесно полезных пользователей на этом сайте, у меня есть этот код. Цель состояла в том, чтобы создать гистограмму результатов тестов для каждого года в школе, «уровень», чтобы создать визуальное представление, позволяющее учащимся увидеть, как их результаты сравниваются с результатами их одноклассников, не раскрывая, кто что набрал. Полученные графики будут содержать только одно имя ученика и ученик #xx для остальных учеников в классе. Следующий код работает с этим образцом данных, но когда я применяю его к полному набору данных из 43 наблюдений, я получаю следующую ошибку:
"Error in mutate_impl(.data, dots) : Evaluation error: Column `n` must be length 43 (the number of rows) or one, not 42."
Кроме того, я хотел бы добавить все проценты в верхней части каждого столбца.
names <- c("Jackson", "Smith", "Johnson", "Richards", "Matthews", "Redmond", "Phillips")
scores <- c(.99, .65, .73, .89, .88, .92, .87)
level <- c(10,11,10,11,11,11,11)
grades <- cbind.data.frame(names, scores, level)
df <- 1:nrow(grades) %>%
purrr::map( ~grades) %>%
set_names(grades$names) %>%
bind_rows(.id = "ID") %>%
nest(-ID) %>%
mutate(level=map2(data,ID, ~.x %>% filter(names == .y) %>% select(level))) %>%
mutate(data=
map2(data, ID, ~.x %>%
mutate(n=paste0("#", sample(seq_len(n()), size = n())),
names=ifelse(names == .y, as.character(names), n),
names=factor(names, levels = c(.y, sample(n, n())))))) %>%
mutate(plots=map2(data,level, ~ggplot(data=.x,aes(x = names, y = scores, fill = scores))+
geom_col() +
ggtitle("test scores by level- February 2018", subtitle = .y$level)
))
library(cowplot)
plot_grid(df$plots[[1]], df$plots[[2]], df$plots[[3]],df$plots[[4]])