Я хотел бы написать функцию, которая суммирует предоставленные данные по некоторым заданным критериям, в данном случае по возрасту
В качестве примера приведены таблицы возраста пользователей и их статистики.
df <- data.frame('Age'=rep(18:25,2), 'X1'=10:17, 'X2'=28:35,'X4'=22:29)
Далее я определяю выходные столбцы, которые имеют отношение к анализу
output_columns <- c('Age', 'X1', 'X2', 'X3')
Эта функция вычисляет базовую сумму X1.X2 и X3 сгруппированы по возрасту.
aggr <- function(data, criteria, output_columns){
k <- data %>% .[, colnames(.) %in% output_columns] %>%
group_by_(.dots = criteria) %>%
#summarise_each(funs(count), age) %>%
summarize_if(is.numeric, sum)
return (k)
}
Когда я называю это так
> e <- aggr(df, "Age", output_columns)
> e
# A tibble: 8 x 3
Age X1 X2
<int> <int> <int>
1 18 20 56
2 19 22 58
3 20 24 60
4 21 26 62
5 22 28 64
6 23 30 66
7 24 32 68
8 25 34 70
Я хочу иметь еще один столбец с именем count , который показывает количествонаблюдения в каждой возрастной группе.Желаемый результат:
> desired
Age X1 X2 count
1 18 20 56 2
2 19 22 58 2
3 20 24 60 2
4 21 26 62 2
5 22 28 64 2
6 23 30 66 2
7 24 32 68 2
8 25 34 70 2
Я пробовал разные способы сделать это, например, tally (), sumrize_each и т. Д. Все они дают неправильные результаты.
Я считаю, что ихдолжен быть легкий и простой способ сделать это.Любая помощь приветствуется.