You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何汇总统计多列不同水平因子的出现次数

因子列分类计数问题的修正实现

现有代码的核心错误

  • 语法层面括号闭合错位:原代码中过短、过长计数的count()参数没有正确闭合,把整段判断逻辑错误传入函数,运行就会直接触发语法报错
  • 统计逻辑偏差:代码中先求频次表再做等式判断的写法返回的是布尔值向量,不是各分类的实际出现次数
  • 未兼容数据笔误:没有匹配数据中出现的"too shot"错写的过短类取值,会导致过短计数比实际值偏低
  • 输出结构错位:sapply返回的矩阵转置后,无法直接对应目标格式的四列统计维度

可直接运行的修正代码

# 1. 统一所有过短类取值,兼容笔误
df[] <- lapply(df, function(col) {
  # 补全因子水平,避免替换值不在原有水平时报错
  levels(col) <- c(levels(col), "too short")
  col[col == "too shot"] <- "too short"
  return(col)
})

# 2. 逐列统计四类取值的出现次数
result_df <- t(sapply(names(df), function(col) {
  col_vals <- df[[col]]
  # 直接对列内的匹配值求和得到计数,自动过滤空值
  cnt_valid <- sum(col_vals == "valid value", na.rm = TRUE)
  cnt_invalid <- sum(col_vals == "invalid value", na.rm = TRUE)
  cnt_short <- sum(col_vals == "too short", na.rm = TRUE)
  cnt_long <- sum(col_vals == "too long", na.rm = TRUE)
  return(c(
    有效取值计数 = cnt_valid,
    无效取值计数 = cnt_invalid,
    过短取值计数 = cnt_short,
    过长取值计数 = cnt_long
  ))
}))

# 3. 调整格式匹配目标输出
result_df <- data.frame(
  变量名 = rownames(result_df),
  result_df,
  row.names = NULL
)

结果说明

运行上述代码后输出的result_df结构完全匹配参考格式,每一行对应一个输入的原始列,四列分别对应该列的有效、无效、过短、过长类别的取值计数;其中过短计数已经自动覆盖了"too short"和原数据里笔误的"too shot"两类过短取值,不会出现漏统计的情况。


内容的提问来源于stack exchange,提问作者Ifeanyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 20:24:02