我想为我的数据框中的每个colname创建for for循环,但是我对group_by方法有错误:
usemethod(“group_by_”)出错:“group_by_”没有适用于“class”类对象的适用方法
我的代码:
for(i in colnames(creditDF)){
distribution <- creditDF %>%
group_by(i) %>%
summarise(value = n()) %>%
select(label = i, value)
print(distribution)
}
如何解决此错误?
感谢您的帮助。
答案 0 :(得分:2)
我提供了一个更加整洁的替代方案,它可以按列创建频率表并将它们绑定在一个数据框中。
library(dplyr)
library(purrr)
mtcars %>%
map(~table(.x)) %>%
lapply(as_tibble) %>%
bind_rows(.id = "var")
# # A tibble: 171 x 3
# var .x n
# <chr> <chr> <int>
# 1 mpg 10.4 2
# 2 mpg 13.3 1
# 3 mpg 14.3 1
# 4 mpg 14.7 1
# 5 mpg 15 1
# 6 mpg 15.2 2
# 7 mpg 15.5 1
# 8 mpg 15.8 1
# 9 mpg 16.4 1
# 10 mpg 17.3 1
# # ... with 161 more rows
答案 1 :(得分:0)
如果我正确理解您的代码 您想要找出数据框中每列中的唯一项目,并将表格打印到控制台
for(i in colnames(creditDF)){
distribution <- creditDF %>%
group_by_at(.vars = i) %>%
summarise(value = n())
print(distribution)
}
答案 2 :(得分:0)
基础R的解决方案。
for(i in creditDF) print(as.data.frame(table(i)))