📜  在 R 中使用 dplyr 汇总多列

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

在 R 中使用 dplyr 汇总多列

在本文中,我们将讨论如何在 R 编程语言中使用 dplyr 包汇总多个列,

方法一:使用 summarise_all() 方法

R 中的 summarise_all 方法用于影响数据帧的每一列。输出数据框返回数据框的所有列,其中指定函数应用于每一列。

summarise_all(data, function)

论据:

  • 数据 - 汇总列的数据框
  • 函数 - 应用于所有数据框列的函数。
R
library("dplyr")
  
# creating a data frame
df < - data.frame(col1=sample(rep(c(1: 5), each=3)),
                  col2=5: 19)
  
print("original dataframe")
print(df)
  
# summarising the data
print("summarised dataframe")
summarise_all(df, mean)


R
library("dplyr")
  
# creating a data frame
df < - data.frame(col1=sample(rep(c(1: 5), each=3)),
                  col2=1: 15,
                  col3=letters[1:15])
  
print("original dataframe")
print(df)
  
# summarising the data
print("summarised dataframe")
df % >%
summarise_at(c("col1", "col2"), mean, na.rm=TRUE)


输出

[1] "original dataframe"
col1 col2 
1     2    1 
2     3    2 
3     4    3 
4     2    4 
5     2    5 
6     4    6 
7     1    7 
8     1    8 
9     5    9 
10    3   10 
11    5   11 
12    1   12 
13    4   13 
14    5   14 
15    3   15    
col1 col2
 1    3    8

说明:所有值的平均值是按列计算的,即计算col1的值之和除以行数。类似地,计算 col2 和 col3 的值的总和。所有列都在最终输出中返回。

方法 2:使用 summarise_at() 方法

summarise_at() 影响使用字符向量或 vars() 提取的变量。它将所选函数应用于数据框。输出数据框包含 summarise_at 方法中指定的所有列。如果提到数据框的所有列,则此方法的功能与 summarise_all 方法相同。

data %>%
 summarise_at(vars(-cols(), ...), function)

论据:

  • 数据 - 汇总列的数据框
  • 函数 - 应用于所有数据框列的函数。

R

library("dplyr")
  
# creating a data frame
df < - data.frame(col1=sample(rep(c(1: 5), each=3)),
                  col2=1: 15,
                  col3=letters[1:15])
  
print("original dataframe")
print(df)
  
# summarising the data
print("summarised dataframe")
df % >%
summarise_at(c("col1", "col2"), mean, na.rm=TRUE)

输出

[1] "original dataframe" 
col1 col2 col3 
1     3    1    a 
2     5    2    b 
3     4    3    c 
4     4    4    d 
5     5    5    e 
6     3    6    f 
7     2    7    g 
8     2    8    h 
9     1    9    i 
10    4   10    j 
11    2   11    k 
12    5   12    l 
13    1   13    m 
14    3   14    n 
15    1   15    o 
[1] "summarised dataframe" 
   col1 col2 
1    3    8