Skip to main content
 首页 » 编程设计

R语言dplyr count 函数

2022年07月19日153telwanggs

dplyr count 函数

count 函数计算数据集中列唯一值的数量。利用count可以方便地以表格形式展示变量的数量。本文通过示例说明如何使用该函数。

加载库

我们可以单独加载dplyr包,我建议直接加载 tidyverse 包,因为我们还要使用其他特性。

library(tidyverse) 
 

加载数据

我们加载 tidyverse中的mtcars数据集,利用glimpse函数看下数据概况。

data("mtcars") 
glimpse(mtcars) 
 
# Rows: 32 
# Columns: 11 
# $ mpg  <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, ~ 
# $ cyl  <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, ~ 
# $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, ~ 
# $ hp   <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, ~ 
# $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, ~ 
# $ wt   <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, ~ 
# $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, ~ 
# $ vs   <dbl> 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, ~ 
# $ am   <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ~ 
# $ gear <dbl> 4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, ~ 
# $ carb <dbl> 4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, ~ 

基础count函数

我们用了两个参数,数据集mtcars以及要计算的列名:

count(mtcars, cyl) 
 
#   cyl  n 
# 1   4 11 
# 2   6  7 
# 3   8 14 
 
# mtcars %>% count(cyl) 

结果返回数据框包括变量名称及对应数量,举例cyl为4的记录有11条。

使用tidyversedplyr时,为了更加直观常应用管道符 %>%mtcars %>% count(cyl),返回结果一致。后面示例我们都使用管道符。

count 排序

mtcars %>% count(cyl, sort = TRUE) 
 
#   cyl  n 
# 1   8 14 
# 2   4 11 
# 3   6  7 
 
# 多列计数排序 
mtcars %>% count(cyl, gear , sort = TRUE) 
 
#   cyl am  n 
# 1   8  0 12 
# 2   4  1  8 
# 3   6  0  4 
# 4   4  0  3 
# 5   6  1  3 
# 6   8  1  2 

增加计算列计数

我们也可以利用count函数增加计算列,当然也可以使用mutate函数。下面示例计算平均动力耗油率。

mtcars %>% count(mgp_by_hp=round(mpg/hp,2), sort=TRUE) 
 
# 展示部分结果 
#    mgp_by_hp n 
# 1       0.05 3 
# 2       0.06 3 
# 3       0.10 3 
# 4       0.11 3 
# 5       0.19 3 
# 6       0.04 1 
# 7       0.08 1 
# 8       0.09 1 
# 9       0.14 1 
# 10      0.16 1 

计算权重

前面示例都是计数,我们也可以通过参数wt指定计算权重,请看示例:

mtcars %>% count(cyl, wt=mpg) 
#   cyl     n 
# 1   4 293.3 
# 2   6 138.2 
# 3   8 211.4 
mtcars %>% group_by(cyl) %>% summarise(sum(mpg)) %>% add_count() 

我们也可以使用分组计算验证结果。

add_count增加计数列

前面示例返回数据框仅指定列及计数n,如果我们要包括所有列并增加指定列的计数,可以使用add_count函数:

mtcars %>% add_count(cyl, sort = TRUE) 
 
# 部分返回数据 
#     mpg cyl  disp  hp drat    wt  qsec vs am gear carb  n 
# 1  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2 14 
# 2  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4 14 
# 3  16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3 14 
# 4  17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3 14 
# 5  15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3 14 
# 6  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4 14 
# 7  10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4 14 
# 8  14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4 14 
# 9  15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2 14 
# 10 15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2 14 
# 11 13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4 14 
# 12 19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2 14 
# 13 15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4 14 
# 14 15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8 14 
# 15 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1 11 

我们看到cyl==8的记录有14条,最后增加n列值为14。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/121188332
阅读延展