首页 > 解决方案 > Dplyr groupby 是对所有列求和还是可以指定 R

问题描述

R 新手,我发现了 groupby,但我很好奇如何对我的 df 中的几乎所有列求和。一些是文本和日期,但其他大多数是我想总结的。我想按第一列团队分组并对我选择的列进行汇总。我该怎么写这个?

在此处输入图像描述

标签: rdplyr

解决方案


这里有一些选项,使用样本数据集

df<- data.frame(
                Team= sample(c("Team A", "Team B","Team C"),50, replace= TRUE),
                A=sample(1:5,50, replace=TRUE),
                B=sample(3:5,50, replace=TRUE),
                C=sample(c("A","B","C"),50, replace=TRUE),
                D=sample(3:5,50, replace=TRUE))

  # Referencing by single column name             
df %>% 
  group_by(Team) %>% 
  summarise(total=sum(A))

# Referencing multiple column names              
df %>% 
  group_by(Team) %>% 
  summarise(totalA=sum(A), totalB= sum(B))


df %>% 
  group_by(Team) %>% 
  summarise_all(sum) # throws an error since some columns are not numeric

df %>% 
  group_by(Team) %>% 
  select(A,B,D) %>%  # select numeric columns first
  summarise_all(sum)


df %>% 
  group_by(Team) %>% 
  summarise_if(is.numeric, sum) #use summarise_if to select numeric columns

推荐阅读