Как выполнить агрегацию и подсчет в наборе данных с помощью R?

В настоящее время я работаю с набором данных Cricket (спорт), где мне нужно найти накопленные пробежки, мячи, выбитые за год, с подсчетом лет. Ниже выдержка из набора данных

введите здесь описание изображения

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

введите здесь описание изображения

Пожалуйста помоги


person Arun Elangovan    schedule 29.03.2018    source источник
comment
Добро пожаловать в СО. Просмотрите как задавать вопросы. Респонденты SO ожидают минимальный воспроизводимый пример/попытку, включая образцы данных . Скриншот бесполезен. Пожалуйста, используйте редактировать, чтобы изменить свой вопрос.   -  person Maurits Evers    schedule 29.03.2018


Ответы (1)


Это должно создать фрейм данных, который у вас есть:

cricket_df <- data.frame(Team1 = rep("DD", 7), Team2 = rep("CSK", 7), year = c(2008, 2008, 2009,2009, 2009, 2010, 2010), balls=c(4,4,2,1,2,3,2), runs=c(4,6,6,0,3,1,8))

И с этим вы можете агрегировать:

aggregate(cricket_df[c("balls", "runs")], by=list(cricket_df$Team1, cricket_df$Team2, cricket_df$year), FUN=sum)
person Wolfgang Arnold    schedule 29.03.2018
comment
Но с помощью этого кода мы не смогли получить year_count. Как это получить? - person Arun Elangovan; 29.03.2018
comment
Истинный. Могут быть более элегантные способы, но вот решение, которое должно сработать: сохранить агрегат в новом фрейме данных: aggr_df <- aggregate(cricket_df[c("balls", "runs")], by=list(cricket_df$Team1, cricket_df$Team2, cricket_df$year), FUN=sum) и столбец для подсчета лет: aggr_df$year_count <- table(cricket_df$year) - person Wolfgang Arnold; 29.03.2018
comment
Спасибо, это работает. Но с набором данных, как показано ниже, он не дает ожидаемых результатов df ‹- data.frame(Team1 = c(DD,DD,DD,DD,DD,DD,DD,RR,RR,RR,RR,RR,RR ,RR), Team2 = rep(CSK, 14), year = c(2008, 2008, 2009,2009, 2009, 2010, 2010,2008, 2008, 2009,2009, 2009, 2010, 2010), balls=c( 4,4,2,1,2,3,2,4,4,2,1,2,3,2), пробеги=с(4,6,6,0,3,1,8,4,4 ,2,1,2,3,2)) aggr_df ‹- совокупность(cricket_df[c(мячи, пробеги)], by=list(cricket_df$Команда1, cricket_df$Команда2, cricket_df$год), FUN=сумма) aggr_df$ year_count ‹- таблица (df$year) - person Arun Elangovan; 30.03.2018