Есть ли способ циклически проходить через уровни фильтра и генерировать выходные данные в R? - PullRequest
0 голосов
/ 04 июля 2019

Я пытаюсь сгенерировать выходные данные с помощью R, но у меня более 200 агентов (уровни в моем множителе), которым требуется собственный отчет (вывод таблицы, который я могу записать в .csv или html).

Я включил воспроизводимый пример ниже.

library(tidyverse)
Agents <- c("A", "B", "C")
Month <- c("May", "June", "July")
Score1 <- c(5,7,1)
Score2 <- c(7,8,3)

x <- cbind(Agents, Month, Score1, Score2)
df <- as.data.frame(x)

df$Score1 <- as.numeric(as.character(df$Score1))
df$Score2 <- as.numeric(as.character(df$Score2))

Report <-  df %>% 
           group_by(Month) %>%
           summarise(Skill = mean(Score1), Attitude = mean(Score2))

Я бы хотел просмотреть своих агентов, используя каждого из них в качестве фильтра в отчете, а затем сохранить его как Report_agentname. Я взглянул на мурлыканье, но не могу полностью разобраться с функцией карты и моими потребностями здесь.

1 Ответ

0 голосов
/ 04 июля 2019

Используя purrr, вы можете создать свою собственную функцию и сохранить отчеты в формате .csv или в другом формате, который вам нужен, например:

my_report <- function(x) {
  Report <- df %>% 
    filter(Agents == x) %>% 
    group_by(Month) %>%
    summarise(Skill = mean(Score1), Attitude = mean(Score2)) %>% 
    write_csv(paste0("Report_", x, ".csv")) ## or whatever format you prefer
}

walk(df$Agents %>% unique, my_report)

walk не возвращает никаких значений. Он применяет функцию my_report к уникальным агентам в df.

Если вы хотите, чтобы отчеты возвращались, вы можете удалить функцию write_csv() и использовать:

my_report2 <- function(x) {
  Report <- df %>% 
    filter(Agents == x) %>% 
    group_by(Month) %>%
    summarise(Skill = mean(Score1), Attitude = mean(Score2))
}

map(df$Agents %>% unique, my_report2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...