Применение одного ярлыка для каждой итерации диаграммы - PullRequest
0 голосов
/ 17 мая 2018

С некоторой помощью чудесно полезных пользователей на этом сайте, у меня есть этот код. Цель состояла в том, чтобы создать гистограмму результатов тестов для каждого года в школе, «уровень», чтобы создать визуальное представление, позволяющее учащимся увидеть, как их результаты сравниваются с результатами их одноклассников, не раскрывая, кто что набрал. Полученные графики будут содержать только одно имя ученика и ученик #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]])
...