Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用dplyr在R中汇总:两个不同列中的值_R_Dplyr - Fatal编程技术网

使用dplyr在R中汇总:两个不同列中的值

使用dplyr在R中汇总:两个不同列中的值,r,dplyr,R,Dplyr,我有以下数据帧: points_team1 points_team2 team1 team2 ------------------------------------------------------------------------ 1 42 32 Doppler/Horst Doherty/Allen 2 40 46 A

我有以下数据帧:

 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团队(例如,Hyden/Brunner在每一侧各一次)

我试图使用
收集
,但后来遇到了如何使用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"]))
我从google和stackoverflow的研究中得到的结果只给了我对包含某个元素的所有行(例如,此处:)求和的答案,但在我的问题中,要求和的列可能取决于两个不同的列,我不知道如何做


请帮忙

您可以使用相同的名称构建两个数据帧,每个团队一个,然后将它们堆叠在一起,并像正常情况一样进行汇总

team1 <- k %>% select(points_won = points_team1,
                      points_lost = points_team2,
                      team = team1)

team2 <- k %>% select(points_won = points_team2,
                      points_lost = points_team1,
                      team = team2)

bind_rows(team1, team2) %>%
    group_by(team) %>%
    summarise_all(sum)
team1%选择(积分=积分,
积分丢失=积分组2,
团队=团队1)
组别2%选择(积分=组别2的积分),
积分损失=积分团队1,
团队=团队2)
绑定行(组1、组2)%>%
组别(组别)%>%
总结所有(总和)
team1 <- k %>% select(points_won = points_team1,
                      points_lost = points_team2,
                      team = team1)

team2 <- k %>% select(points_won = points_team2,
                      points_lost = points_team1,
                      team = team2)

bind_rows(team1, team2) %>%
    group_by(team) %>%
    summarise_all(sum)