我尝试申请循环以获取数据帧中每一列的计数。我创建了一个频率名称数据框,其中只包含分类变量。
n <- names(freq)
for(var in n){
count(freq,var)
}
我收到以下错误:
grouped_df_impl(数据,未命名(变量),删除)中的错误:列
var
未知
答案 0 :(得分:2)
当var
需要一个变量时,您正在使用dplyr::count
作为字符串。要获取变量,请使用get
。
在此示例中,数据帧freq
将是内置的int数据集iris
。
freq <- iris
n <- names(freq)
n <- n[sapply(n, function(var) is.factor(freq[[var]]))]
for(var in n){
cnt <- dplyr::count(freq, get(var))
print(cnt)
}
## A tibble: 3 x 2
# `get(var)` n
# <fct> <int>
#1 setosa 50
#2 versicolor 50
#3 virginica 50
答案 1 :(得分:0)
基数R中的table
函数确实有助于创建分类变量的计数。但是,输出是一个特定的表对象-因此,R中几乎所有后续函数都无法识别出该输出,而该函数将被证明是有用的(ggplot
,kable
等)。
这是一个函数,该函数创建一个包含因子中每个级别的计数的列表,并将其转换为数据帧。
#df should be a data structure containing the factors of interest
freqList = lapply(df,
function(x) {
my_lst = data.frame(table(x))
names(my_lst) = c("level", "n")
return(my_lst)
}
)
freqList
呼叫freqList
将打印完整列表。每个列/变量将是其自己的数据框对象。