📜  Dplyr – 在 R 中使用变量名对多列进行分组

📅  最后修改于: 2022-05-13 01:54:44.490000             🧑  作者: Mango

Dplyr – 在 R 中使用变量名对多列进行分组

group_by()方法用于根据指定为函数调用参数的列对数据框中包含的数据进行分组。 group_by()函数将 cross 和必须应用于数据框所有列的指定分组的所有方法作为参数。

句法:

group_by(col1, col2,..)

接着是应用 summary()函数,该函数用于在所应用的列上生成汇总统计信息。该列被重命名为指定的新名称。可以为新列分配任何聚合方法,例如 mean()、sum() 等。让我们先看看一种更简单的方法,并将 groupby 仅应用于一列。

示例:使用变量名对单列进行分组

R
library(data.table)
library(dplyr)
  
# creating first data frame
data_frame <- data.table(col1 = rep(LETTERS[1:3],each=2),
                         col2 = c(1,1,3,4,5,6),
                         col3 = 1
                        )
  
print ("Original DataFrame")
print (data_frame)
  
# deciding the column to group by
grp <- c('col1')
  
# calculating mean of col2 based on col1 group
data_frame %>% 
  group_by(across(all_of(grp))) %>% 
  summarize(mean_col2 = mean(col2))


R
library(data.table)
library(dplyr)
  
# creating first data frame
data_frame <- data.table(col1 = rep(LETTERS[1:3],each=2),
                         col2 = c(1,1,3,4,5,6),
                         col3 = 1
                        )
  
print ("Original DataFrame")
print (data_frame)
  
# deciding the column to group by
grp <- c('col1','col2')
  
# calculating mean of col2 based on col1 group
data_frame %>% 
  group_by(across(all_of(grp))) %>% 
  summarize(mean_col2 = sum(col2))


输出

[1] "Original DataFrame" 
col1 col2 col3 
1:    A    1    1 
2:    A    1    1 
3:    B    3    1 
4:    B    4    1 
5:    C    5    1 
6:    C    6    1 
# A tibble: 3 x 2   
col1  mean_col2   
      
1 A           1   
2 B           3.5 
3 C           5.5

由于有 A、B 和 C 三组,因此计算这三组中每组的平均值。

示例:使用变量名在多列上应用 group_by

电阻

library(data.table)
library(dplyr)
  
# creating first data frame
data_frame <- data.table(col1 = rep(LETTERS[1:3],each=2),
                         col2 = c(1,1,3,4,5,6),
                         col3 = 1
                        )
  
print ("Original DataFrame")
print (data_frame)
  
# deciding the column to group by
grp <- c('col1','col2')
  
# calculating mean of col2 based on col1 group
data_frame %>% 
  group_by(across(all_of(grp))) %>% 
  summarize(mean_col2 = sum(col2))

输出

# A tibble: 5 x 3 
# Groups:   col1 [3]   
col1   col2 mean_col2   
       
1 A         1         2 
2 B         3         3 
3 B         4         4 
4 C         5         5 
5 C         6         6