Редактировать: только что понял, что столбец side
в данных вообще не используется, поэтому, пожалуйста, не учитывайте его для целей примера.
У меня есть большой фрейм данных баскетбольных игр в режиме игры за игрой, и я хотел бы выполнить group_by
, summarise
и summarise_at
для моих данных. Ниже приведено подмножество моего фрейма данных:
> dput(zed)
structure(list(side = c("right", "right", "right", "right", "right",
"right", "left", "right", "right", "right", "left", "right",
"left", "left", "left", "right", "right", "right", "left", "right"
), result = c("twopointmiss", "twopointmade", "twopointmade",
"twopointmiss", "twopointmade", "twopointmade", "twopointmiss",
"twopointmade", "twopointmade", "twopointmade", "twopointmade",
"twopointmade", "twopointmiss", "twopointmiss", "twopointmiss",
"twopointmiss", "twopointmade", "twopointmade", "twopointmiss",
"twopointmiss"), zonenumber = c(1, 1, 1, 1, 2, 3, 2, 3, 2, 3,
4, 4, 4, 1, 1, 2, 3, 2, 3, 4), team = c("Bos", "Bos", "Bos",
"Bos", "Bos", "Bos", "Bos", "Bos", "Bos", "Bos", "Min", "Min",
"Min", "Min", "Min", "Min", "Min", "Min", "Min", "Min")), row.names = c(3L,
5L, 8L, 14L, 17L, 23L, 28L, 30L, 39L, 41L, 42L, 43L, 47L, 52L,
54L, 58L, 60L, 63L, 69L, 72L), class = "data.frame")
> zed
side result zonenumber team
3 right twopointmiss 1 Bos
5 right twopointmade 1 Bos
8 right twopointmade 1 Bos
14 right twopointmiss 1 Bos
17 right twopointmade 2 Bos
23 right twopointmade 3 Bos
28 left twopointmiss 2 Bos
30 right twopointmade 3 Bos
39 right twopointmade 2 Bos
41 right twopointmade 3 Bos
42 left twopointmade 4 Min
43 right twopointmade 4 Min
47 left twopointmiss 4 Min
52 left twopointmiss 1 Min
54 left twopointmiss 1 Min
58 right twopointmiss 2 Min
60 right twopointmade 3 Min
63 right twopointmade 2 Min
69 left twopointmiss 3 Min
72 right twopointmiss 4 Min
В приведенном ниже примере я только использует summarise
, так как в настоящее время я не уверен, как использовать summarise
и summarise_at
с тем же group_by
по телефону:
> grouped.df <- zed %>%
+ dplyr::group_by(team) %>%
+ dplyr::summarise(
+ shotsMade = sum(result == "twopointmade"),
+ shotsAtt = n(),
+ shotsPct = round(shotsMade / shotsAtt),
+ points = 2 * shotsMade,
+
+ z1Made = sum(zonenumber == 1),
+ z2Made = sum(zonenumber == 2),
+ z3Made = sum(zonenumber == 3),
+ z4Made = sum(zonenumber == 4)
+ )
> grouped.df
# A tibble: 2 x 9
team shotsMade shotsAtt shotsPct points z1Made z2Made z3Made z4Made
<chr> <int> <int> <dbl> <dbl> <int> <int> <int> <int>
1 Bos 7 10 1 14 4 3 3 0
2 Min 4 10 0 8 2 2 2 4
В приведенном ниже примере я хотел бы создать первые 4 столбца (shotsMade, shotsAtt, shotsPct, points) в summarise
и создать столбцы z#made
с summarise_at. В моих полных данных есть ~ 30 уникальных столбцов, которые я планирую создать с помощью summarise
, и ~ 80 похожих столбцов, которые я планирую создать с помощью summarise_at
.
Ради небольшого примера я не хотел приводить весь свой фрейм данных для этого примера. Если я смогу реализовать оба summarise
и summarise_at
в приведенном выше примере, то я смогу сделать это и для моего полного фрейма данных.
Любые мысли по этому поводу приветствуются, поскольку я особенно заинтересован в улучшении с помощью функций _at
в dplyr. Спасибо!