我正在清理一些数据,并希望使用dplyr中的count()函数来查看每个变量的唯一值。
有办法自动做到这一点吗?现在我正在使用这个方法:
df %>% count(variable1)
df %>% count(variable2)
df %>% count(variable3)
...我希望返回所有这些变量,而不必重复代码行并键入每个变量。我想让R识别所有的列名,并自动填写它们,但我不知道从哪里开始。如果我只是把变量加在一起,比如说
df %>% count(variable1, variable2)
当我想要每个变量的表时,就会得到这两个变量的计数。
发布于 2020-09-11 14:54:27
假设您希望从am、gear和carb中计数mtcars。您可以通过table()对每个变量应用函数map(),后者返回list对象。
library(dplyr)
library(purrr)
mtcars %>%
select(am, gear, carb) %>%
map(table)
# $am
# 0 1
# 19 13
#
# $gear
# 3 4 5
# 15 12 5
#
# $carb
# 1 2 3 4 6 8
# 7 10 3 10 1 1base 版本:
lapply(mtcars[c("am", "gear", "carb")], table)此外,您还可以使用summary()来计算因子变量。
mtcars %>%
select(am, gear, carb) %>%
mutate(across(.fn = as.factor)) %>%
summary
# am gear carb
# 0:19 3:15 1: 7
# 1:13 4:12 2:10
# 5: 5 3: 3
# 4:10
# 6: 1
# 8: 1发布于 2020-09-11 14:30:22
看起来,您可以使用tidyverse方法来解决问题。您希望获取数据集中每个变量的计数(请下次添加df示例)。您可以使用长格式的数据获取与您想要的接近的东西。我将向您展示一个mtcars数据的示例。我将选择一些显示类的变量,以便用计数对它们进行汇总。在这里,代码:
library(tidyverse)
#Data
data("mtcars")我将选择一些分类变量与下一段代码,然后我将重塑为长。最后,我将使用summarise()和n() (用于计数)和group_by()来确定计数:
#Code
mtcars %>% select(cyl,vs,am,gear,carb) %>%
#Format to long
pivot_longer(cols = everything()) %>%
#Group and summarise
group_by(name,value) %>%
summarise(N=n())输出:
# A tibble: 16 x 3
# Groups: name [5]
name value N
<chr> <dbl> <int>
1 am 0 19
2 am 1 13
3 carb 1 7
4 carb 2 10
5 carb 3 3
6 carb 4 10
7 carb 6 1
8 carb 8 1
9 cyl 4 11
10 cyl 6 7
11 cyl 8 14
12 gear 3 15
13 gear 4 12
14 gear 5 5
15 vs 0 18
16 vs 1 14如您所见,所有变量都显示了它们各自的组和计数。
发布于 2020-09-11 15:05:16
一个简单的解决方案是将sapply或lapply与table结合使用。
sapply(df,table)这将为dt的每个列返回一个计数表的列表,您可以始终传入一个子设置的数据,以获得您感兴趣的变量的计数。
https://stackoverflow.com/questions/63848845
复制相似问题