首页 > 解决方案 > 如何将 proptable() 应用于 R 中的所有因子变量

问题描述

我有一个数据集,其中包含不同级别的许多因子变量。我如何proptable()有效地为每个因子变量打印出一个。预期的答案是数据框或表格。提前谢谢了。

df <- mtcars[, c("am", "gear")]
df$am <- factor(df$am); df$gear <- factor(df$gear)


prop.table(table(df$am))
prop.table(table(df$gear))

标签: rlapplydata-manipulation

解决方案


也许与 sapply?

sapply(df, function(x) if("factor" %in% class(x)) {prop.table(table(x))})

例如当 prop.table(table(df)) 抛出错误时:

library(palmerpenguins)

prop.table(table(penguins))
#Error in table(penguins) : attempt to make a table with >= 2^31 elements

sapply(penguins, function(x) if("factor" %in% class(x)) {prop.table(table(x))})
#$species
#x
#   Adelie Chinstrap    Gentoo 
#0.4418605 0.1976744 0.3604651 

#$island
#x
#   Biscoe     Dream Torgersen 
#0.4883721 0.3604651 0.1511628 

#$bill_length_mm
#NULL

#$bill_depth_mm
#NULL

#$flipper_length_mm
#NULL

#$body_mass_g
#NULL

#$sex
#x
#   female      male 
#0.4954955 0.5045045 

#$year
#NULL

推荐阅读