如何在一次运行中使用 count 进行多列计数

问题描述 投票:0回答:1

通常,当我计算数据框中的列时,我使用

count()
包中的
dplyr
函数。

library(dplyr)

mtcars %>% 
  count(cyl) 

mtcars %>% 
  count(am) 

mtcars %>% 
  count(gear) 

等等... 现在我想一次性数出

cyl, am, gear

注:我不是这个意思

mtcars %>%
 count(cyl, am, gear)

到目前为止我的工作方法:


library(dplyr)
library(tidyr)

mtcars %>% 
  count(am) %>% 
bind_rows(mtcars %>% 
            count(cyl)) %>% 
  bind_rows(mtcars %>% 
              count(gear)) %>% 
pivot_longer(-n, 
             values_drop_na = TRUE) %>% 
  unite("variable", c("name", "value")) %>% 
  relocate(variable, n)
  variable     n
  <chr>    <int>
1 am_0        19
2 am_1        13
3 cyl_4       11
4 cyl_6        7
5 cyl_8       14
6 gear_3      15
7 gear_4      12
8 gear_5       5

我想知道是否有更简洁的方法来实现这一点。

r dplyr count
1个回答
0
投票

也许旋转并计数?

library(dplyr)
library(tidyr) # pivot_longer
select(mtcars, am, cyl, gear) |>
  pivot_longer(cols = everything()) |>
  count(name, value)
# # A tibble: 8 × 3
#   name  value     n
#   <chr> <dbl> <int>
# 1 am        0    19
# 2 am        1    13
# 3 cyl       4    11
# 4 cyl       6     7
# 5 cyl       8    14
# 6 gear      3    15
# 7 gear      4    12
# 8 gear      5     5

如果需要,您可以通过将名称粘贴在一起来“清理”这些名称。

© www.soinside.com 2019 - 2024. All rights reserved.