You need to enable JavaScript to run this app. R语言中使用aggregate与table函数统计不同STATUS对应的variant数量的方法
优惠活动
大模型
产品
解决方案
定价
更多

R语言中使用aggregate与table函数统计不同STATUS对应的variant数量的方法

原代码输出晦涩的核心原因
  • 分组逻辑和需求不匹配:你需要统计不同STATUS分组下各variant类型的样本数量,但原代码将variant设为分组键、把STATUS作为待统计的向量,统计维度和目标错位
  • 输出结构未做规范化命名:传入by = list(tt$variant)时没有给列表元素自定义名称,aggregate会默认将分组列命名为Group.1,待统计结果列统一命名为x;加上table函数返回的是嵌套结构,最终x列的每个单元格会内嵌一个table对象,不会自动展开为独立的数值列,这就是输出列名晦涩、难以解读的直接原因
匹配需求的正确实现(仅使用base R的aggregate、table函数)
  • 调整统计逻辑:将待统计向量设为variant,分组键设为STATUS,同时为分组列指定易读的名称,修正后代码为:
    aggregate(tt$variant, by = list(STATUS = tt$STATUS), table)
  • 该代码运行后会自动展开table的结构为扁平化数值列,输出参考:

    STATUS 0/0 0/1 1/1
    1 1 0 3 2
    2 -9 5 0 1

  • 若需求反向,需要按variant分组、计数组内不同STATUS的样本数量,只需将两个向量的位置对调,对应代码为:
    aggregate(tt$STATUS, by = list(variant = tt$variant), table)
    输出参考:

    variant 1 -9
    1 0/0 5 0
    2 0/1 3 0
    3 1/1 2 1

实用优化技巧
  • 避免不同分组下因缺失某类值导致的列数错乱:因为tt中的variant、STATUS都是factor类型,若某分组下完全缺失某类取值,table函数返回的向量长度会不一致,导致aggregate输出结构错位。可以通过固定factor层级的方式优化代码:
    aggregate(tt$variant, by = list(STATUS = tt$STATUS), function(x) table(factor(x, levels = levels(tt$variant))))
    该写法会强制每个分组的table输出固定维度,不会因缺项出现列数不一致的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 15:54:05