У меня есть следующий фрейм данных:
points_team1 points_team2 team1 team2
------------------------------------------------------------------------
1 42 32 Doppler/Horst Doherty/Allen
2 40 46 Abbiati/Andreatta Mesa/Garcia
3 50 49 Bergmann/Harms Basta/Kolaric
4 46 48 Mol H./Berntsen Regza/Smits
5 29 42 Doppler/Horst Hyden/Brunner
6 31 42 Hyden/Brunner Liamin/Krasilnikov
Теперь я хотел бы собрать сумму очков, которые каждая команда набрала и потеряла.Обратите внимание, что команда может быть командой 1 ИЛИ командой 2 (например, Хайден / Бруннер по одному на каждой стороне).
Я пытался использовать gather
, но потом застрял, как использовать что-то вроде SUMIF.
k <- structure(list(points_team1 = c(42, 40, 50, 46, 29, 31), points_team2 = c(32,
46, 49, 48, 42, 42), team1 = c("Doppler/Horst", "Abbiati/Andreatta",
"Bergmann/Harms", "Mol H. / Berntsen", "Doppler/Horst", "Hyden/Brunner"
), team2 = c("Doherty/Allen", "Mesa/Garcia", "Basta/Kolaric",
"Regza/Smits", "Hyden/Brunner", "Liamin/Krasilnikov")), row.names = c(NA,
-6L), class = "data.frame")
v <- k %>% tidyr::gather('team1','team2', key="team_id", value="teamname") %>%
dplyr::group_by(teamname) %>%
dplyr::summarize(matches_played=n(), points_won=sum(points_team1[team_id == "team1"]))
Ожидаемый результат для данного набора данных будет следующим:
teamname points_won points_lost
-----------------------------------------------------
1 Doppler/Horst 71 74
2 Abbiati/Andreatta 40 46
3 Mesa/Garcia 46 40
4 Hyden/Brunner 73 71
...
Результаты, полученные при исследовании google и stackoverflow, дали только ответы на сумму всех строк, содержащих определенный элемент (например, здесь: Суммируйте с условиями в dplyr ), но в моем вопросе столбец для суммирования может зависеть от 2 разных столбцов, и я не могу понять, как это сделать.
Пожалуйста, помогите!