使用dplyr中的循环获取频率
我正在尝试使用loop和dplyr包获得每个变量的单独频率表,下面是使用mtcars数据的代码示例:使用dplyr中的循环获取频率,r,dplyr,R,Dplyr,我正在尝试使用loop和dplyr包获得每个变量的单独频率表,下面是使用mtcars数据的代码示例: library(dplyr) var= c("vs", "am", "gear") for (i in var){ mtcars %>% group_by(carb) %>% count(i) } 遗憾的是,只有我得到: Error: Column `i` is unknown 我也试过了 for (i in var){ mtcars %>% group_by(carb
library(dplyr)
var= c("vs", "am", "gear")
for (i in var){
mtcars %>%
group_by(carb) %>%
count(i)
}
遗憾的是,只有我得到:
Error: Column `i` is unknown
我也试过了
for (i in var){
mtcars %>%
group_by(carb) %>%
summarise_each(funs(n()), i)
}
但不是成功,
请给我任何建议。对于以编程方式将变量作为字符串传递,您可以使用这些函数的版本,并在末尾加上下划线,例如
计数
,分组
,等等
在这种情况下,它将是:
for (i in var){
mtcars %>%
group_by(carb) %>%
count_(i) %>%
print()
}
您特别要求为循环提供一个,但出于您的考虑,这里有一个lappy
备选方案,它可以更容易地将不同的结果存储在一个地方,以便以后访问:
lapply(var, FUN = function(i) mtcars %>% group_by(carb) %>% count_(i))
要以编程方式将变量作为字符串传递,可以使用这些函数的版本,并在末尾加上下划线,例如count\u
,groupby\u
,等等
在这种情况下,它将是:
for (i in var){
mtcars %>%
group_by(carb) %>%
count_(i) %>%
print()
}
您特别要求为
循环提供一个,但出于您的考虑,这里有一个lappy
备选方案,它可以更容易地将不同的结果存储在一个地方,以便以后访问:
lapply(var, FUN = function(i) mtcars %>% group_by(carb) %>% count_(i))
我们可以使用!!sym()
用于变量名。我还建议将结果保存到如下列表中
var <- c("vs", "am", "gear")
library(dplyr)
count_tables <- list()
for (i in var){
temp <- mtcars %>%
group_by(carb) %>%
count(!!sym(i))
count_tables[[i]] <- temp
}
count_tables
# $vs
# # A tibble: 8 x 3
# # Groups: carb [6]
# carb vs n
# <dbl> <dbl> <int>
# 1 1 1 7
# 2 2 0 5
# 3 2 1 5
# 4 3 0 3
# 5 4 0 8
# 6 4 1 2
# 7 6 0 1
# 8 8 0 1
#
# $am
# # A tibble: 9 x 3
# # Groups: carb [6]
# carb am n
# <dbl> <dbl> <int>
# 1 1 0 3
# 2 1 1 4
# 3 2 0 6
# 4 2 1 4
# 5 3 0 3
# 6 4 0 7
# 7 4 1 3
# 8 6 1 1
# 9 8 1 1
#
# $gear
# # A tibble: 11 x 3
# # Groups: carb [6]
# carb gear n
# <dbl> <dbl> <int>
# 1 1 3 3
# 2 1 4 4
# 3 2 3 4
# 4 2 4 4
# 5 2 5 2
# 6 3 3 3
# 7 4 3 5
# 8 4 4 4
# 9 4 5 1
# 10 6 5 1
# 11 8 5 1
我们可以使用!!sym()
用于变量名。我还建议将结果保存到如下列表中
var <- c("vs", "am", "gear")
library(dplyr)
count_tables <- list()
for (i in var){
temp <- mtcars %>%
group_by(carb) %>%
count(!!sym(i))
count_tables[[i]] <- temp
}
count_tables
# $vs
# # A tibble: 8 x 3
# # Groups: carb [6]
# carb vs n
# <dbl> <dbl> <int>
# 1 1 1 7
# 2 2 0 5
# 3 2 1 5
# 4 3 0 3
# 5 4 0 8
# 6 4 1 2
# 7 6 0 1
# 8 8 0 1
#
# $am
# # A tibble: 9 x 3
# # Groups: carb [6]
# carb am n
# <dbl> <dbl> <int>
# 1 1 0 3
# 2 1 1 4
# 3 2 0 6
# 4 2 1 4
# 5 3 0 3
# 6 4 0 7
# 7 4 1 3
# 8 6 1 1
# 9 8 1 1
#
# $gear
# # A tibble: 11 x 3
# # Groups: carb [6]
# carb gear n
# <dbl> <dbl> <int>
# 1 1 3 3
# 2 1 4 4
# 3 2 3 4
# 4 2 4 4
# 5 2 5 2
# 6 3 3 3
# 7 4 3 5
# 8 4 4 4
# 9 4 5 1
# 10 6 5 1
# 11 8 5 1
count\(
已弃用。请将count
与tidyeval
()一起使用。count()不推荐使用。请将count
与tidyeval
()一起使用。