Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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对多个group by变量进行计数_R_Group By_Count_Dplyr - Fatal编程技术网

使用dplyr对多个group by变量进行计数

使用dplyr对多个group by变量进行计数,r,group-by,count,dplyr,R,Group By,Count,Dplyr,我有一个包含多个分类变量的数据集 data <- data_frame( HomeTeam = c("Team1", "Team2", "Team3", "Team4", "Team2", "Team2", "Team4", "Team3", "Team2", "Team1", "Team3", "Team2"), AwayTeam = c("Team2", "Team1", "Team4", "Team3", "Team1", "Team4", "Team1"

我有一个包含多个分类变量的数据集

data <- data_frame(
HomeTeam = c("Team1", "Team2", "Team3", "Team4", "Team2", "Team2", "Team4", 
             "Team3", "Team2", "Team1", "Team3", "Team2"),
AwayTeam = c("Team2", "Team1", "Team4", "Team3", "Team1", "Team4", "Team1", 
             "Team2", "Team3", "Team3", "Team4", "Team1"),
HomeScore = c(10, 5, 12, 18, 17, 19, 23, 17, 34, 19, 8, 3),
AwayScore = c(4, 16, 9, 19, 16, 4, 8, 21, 6, 5, 9, 17),
Venue = c("Ground1", "Ground2", "Ground3", "Ground3", "Ground1", "Ground2", 
          "Ground1", "Ground3", "Ground2", "Ground3", "Ground4", "Ground2"))
数据%
总结(NumberOfGamesHome=n())
AwayTeamCount%
分组依据(AwayTeam)%>%
总结(NumberOfGamesAway=n())

理想的这里有一种可能性,使用
收集
将数据从宽到长进行传播,按球队分组,并总结主客场比赛的数量

library(tidyverse)
data %>%
    gather(key, Team) %>%
    group_by(Team) %>%
    summarise(
        NumberOfGamesHome = sum(key == "HomeTeam"),
        NumberOfGamesaWAY = sum(key == "AwayTeam"))
## A tibble: 4 x 3
#  Team  NumberOfGamesHome NumberOfGamesaWAY
#  <chr>             <int>             <int>
#1 Team1                 2                 4
#2 Team2                 5                 2
#3 Team3                 3                 3
#4 Team4                 2                 3
库(tidyverse)
数据%>%
聚集(关键点,团队)%>%
组别(组别)%>%
总结(
NumberOfGamesHome=sum(键==“HomeTeam”),
NumberOfGamesaWAY=sum(键==“AwayTeam”))
##一个tibble:4x3
#团队编号游戏名称游戏编号
#                            
#1队12 4
#2队2 5 2
#3队3 3
#4团队4 2 3

更新 要使用其他列反映更新的示例数据,可以执行以下操作

data %>%
    gather(key, Team, HomeTeam, AwayTeam) %>%
    group_by(Team) %>%
    summarise(
        NumberOfGamesHome = sum(key == "HomeTeam"),
        NumberOfGamesaWAY = sum(key == "AwayTeam"))
## A tibble: 4 x 3
#  Team  NumberOfGamesHome NumberOfGamesaWAY
#  <chr>             <int>             <int>
#1 Team1                 2                 4
#2 Team2                 5                 2
#3 Team3                 3                 3
#4 Team4                 2                 3
数据%>%
聚集(关键、团队、主队、AwayTeam)%>%
组别(组别)%>%
总结(
NumberOfGamesHome=sum(键==“HomeTeam”),
NumberOfGamesaWAY=sum(键==“AwayTeam”))
##一个tibble:4x3
#团队编号游戏名称游戏编号
#                            
#1队12 4
#2队2 5 2
#3队3 3
#4团队4 2 3

感谢您对我提供的数据的回复。在我的实际数据中,我有其他数字和字符变量,它们用这个解决方案分组到关键的“team”列中。我是否可以从“group_by”函数中排除这些变量?您是否可以更新您的问题以显示一些示例数据和预期输出?您可以在收集期间排除列,但确切的语法取决于您的特定数据和预期输出。谢谢,我刚刚编辑了数据,以更准确地反映源数据-set@perkot谢谢,我已经更新了我的答案,请看一看。
library(tidyverse)
data %>%
    gather(key, Team) %>%
    group_by(Team) %>%
    summarise(
        NumberOfGamesHome = sum(key == "HomeTeam"),
        NumberOfGamesaWAY = sum(key == "AwayTeam"))
## A tibble: 4 x 3
#  Team  NumberOfGamesHome NumberOfGamesaWAY
#  <chr>             <int>             <int>
#1 Team1                 2                 4
#2 Team2                 5                 2
#3 Team3                 3                 3
#4 Team4                 2                 3
data %>%
    gather(key, Team, HomeTeam, AwayTeam) %>%
    group_by(Team) %>%
    summarise(
        NumberOfGamesHome = sum(key == "HomeTeam"),
        NumberOfGamesaWAY = sum(key == "AwayTeam"))
## A tibble: 4 x 3
#  Team  NumberOfGamesHome NumberOfGamesaWAY
#  <chr>             <int>             <int>
#1 Team1                 2                 4
#2 Team2                 5                 2
#3 Team3                 3                 3
#4 Team4                 2                 3