R Как зациклить несколько вычислений для каждого уникального фактора в столбце моих данных и добавить каждый расчет в новый столбец или таблицу - PullRequest
0 голосов
/ 28 ноября 2018

У меня большой набор данных, и я хочу сделать отчет для каждой компании в моем наборе данных.В отчете будет 4 столбца, первые 3 столбца будут фиксированными, а последний столбец требует расчета на основе данных каждой компании.Идеальным выходом будет такой:

Issue_code    Description   Issue   # of violations  
   ..            ..          ..           2
   ..            ..          ..           5
   ..            ..          ..           18  

И в данных примерно 16 уникальных компаний.Поэтому в конце у меня будет 16 таких таблиц с одинаковыми первыми 3 столбцами и другим последним столбцом.

Мое начало цикла следующее:

for (i in unique(data$company) {

  i1 <-  filter(company == i) %>%
         summarise_at("ID", funs(sum(is.na(.))))

  i2 <-  filter(company == i) %>%
         filter(Frequency > 5) %>%
         count()

  i3 <-  filter(company == i) %>%
         filter( Year %in% c(1998, 1996, 1997) %>%
         summarise_at("amount", funs(sum(is.na(.))))
}

И у меня возникают проблемы с назначением(цикл) эти вычисления для соответствующих таблиц или столбцов.Я думал о том, чтобы составить список из 16 столбцов «# нарушений» и назначить каждый расчет каждой таблице, но мои навыки R не могли достичь даже моих мыслей.Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 28 ноября 2018

Мы можем создать группу по компании и использовать несколько столбцов в summarise_at

library(dplyr)
data %>%
     group_by(company) %>%
      summarise_at(vars(ID,Frequency, Date), funs(sum(is.na(.)))

Если мы заинтересованы в применении различных функций к столбцам, используйте map

map2(c("ID", "Frequency", "Date"), listofFunctions, ~ 
                data %>%
                    group_by(company) %>%
                    summarise_at(.x, funs(.y))
...