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

R语言如何统计数据列小于指定数值的行数并输出结构化汇总表

问题原因
  • 第一次代码返回空tibble:nrow()的统计对象是数据框、矩阵这类二维结构,你传入的S2S_Mins < 5是逻辑向量,nrow()对向量返回NULL,最终生成的汇总表就没有有效列。
  • 第二次代码报参数错误:dplyr的n()函数没有入参,作用是直接统计当前分组的总行数,你传入的逻辑条件属于多余参数,因此触发报错。
正确实现方法

你原本用sum(逻辑条件, na.rm = TRUE)统计符合条件行数的逻辑是对的,直接套用到summarise里即可,再配合长表转换就能得到你要的TimeCategory+Count结构的汇总表:

library(dplyr)
library(tidyr)

# 方法1:直接写阈值生成汇总表
count_df <- summary %>%
  summarise(
    小于5 = sum(S2S_Mins < 5, na.rm = TRUE),
    小于10 = sum(S2S_Mins < 10, na.rm = TRUE),
    小于20 = sum(S2S_Mins < 20, na.rm = TRUE),
    小于30 = sum(S2S_Mins < 30, na.rm = TRUE),
    小于60 = sum(S2S_Mins < 60, na.rm = TRUE)
  ) %>%
  # 宽表转长表,匹配你要的输出结构
  pivot_longer(cols = everything(), names_to = "TimeCategory", values_to = "Count")

如果后续阈值需要调整、新增,更简洁的写法是用purrr批量遍历阈值,不需要重复写sum语句:

library(dplyr)
library(purrr)

# 自定义所有要统计的阈值
thresholds <- c(5, 10, 20, 30, 60)
count_df <- tibble(
  TimeCategory = paste0("小于", thresholds),
  Count = map_dbl(thresholds, ~ sum(summary$S2S_Mins < .x, na.rm = TRUE))
)

用你提供的50行样本数据运行后,得到的汇总结果如下:

TimeCategoryCount
小于50
小于100
小于208
小于3017
小于6039

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:15:02