R语言统计数据集分类与数值变量数量并使用ggplot2绘制柱状图
实现步骤与代码
第一步:解决全量变量类型识别问题
str()默认仅输出前100个列的信息,你可以通过修改list.len参数直接输出全部列的类型:
# 输出所有列的类型信息,无需用summary遍历 str(你的数据集名, list.len = ncol(你的数据集名))
第二步:分类统计两类变量的数量
针对100万行的大数据集,推荐用高效的极值判断逻辑识别0/1分类变量,避免逐行取唯一值的性能损耗:
library(dplyr) library(ggplot2) # 替换为你实际的数据集名称 df <- 你的数据集名 # 批量识别变量类型 var_type_df <- df |> summarise(across(everything(), function(col) { # 仅对数值型列做二分类判断,非数值列默认归为其他/你可按需调整逻辑 if (!is.numeric(col)) return("其他类型") col_min <- min(col, na.rm = TRUE) col_max <- max(col, na.rm = TRUE) distinct_cnt <- n_distinct(col, na.rm = TRUE) if (col_min == 0 && col_max == 1 && distinct_cnt <= 2) { "0/1分类型变量" } else { "数值型变量" } })) |> t() |> as.data.frame() |> setNames("变量类型") # 统计两类变量的数量 type_count <- var_type_df |> count(变量类型, name = "变量数量")
第三步:绘制对比柱状图
ggplot(type_count, aes(x = 变量类型, y = 变量数量, fill = 变量类型)) + geom_col(width = 0.6, alpha = 0.8) + # 柱子顶部标注具体数量 geom_text(aes(label = 变量数量), vjust = -0.3, size = 4) + labs( title = "变量类型数量对比", x = "变量类型", y = "变量个数" ) + theme_minimal() + theme(legend.position = "none")
注意事项
- 如果你的0/1分类型变量已经设置为factor格式,可在判断逻辑中补充
is.factor(col)的判定条件,适配你的实际数据结构 - 若数据中存在缺失值,可按需将
NA加入判断允许值范围,调整对应判定逻辑即可
内容的提问来源于stack exchange,提问作者MSasta
相关产品推荐
相关产品推荐

