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

R语言:按区间统计观测数及带条件分组统计求助

在R中处理mtcars的mpg区间统计需求

方法一:基础R实现

步骤1:划分mpg区间

通过cut()函数给mpg字段划分区间,结合mtcars中mpg的实际范围(10.4~33.9)设置断点,生成左开右闭的区间分组:

# 生成区间分组变量
mtcars$mpg_group <- cut(
  mtcars$mpg,
  breaks = c(10, 15, 20, 25, 30, 35),
  right = TRUE,          # 区间为左开右闭格式
  include.lowest = FALSE # 不包含左端点(适配最小mpg=10.4)
)
# 转为因子确保所有定义的区间都被保留
mtcars$mpg_group <- factor(mtcars$mpg_group, levels = levels(mtcars$mpg_group))

步骤2:统计各类数值

分别统计每个区间的总观测数,以及gear为3或4的车辆数,最后合并为结果表格:

# 统计每个区间的总观测数
total_count <- table(mtcars$mpg_group)
# 统计每个区间内gear为3/4的车辆数量
gear_34_count <- table(mtcars[mtcars$gear %in% c(3, 4), "mpg_group"])

# 合并为结构化数据框
result_df <- data.frame(
  mpg区间 = names(total_count),
  观测总数 = as.numeric(total_count),
  gear3或4数量 = as.numeric(gear_34_count)
)

# 查看最终结果
print(result_df)

方法二:dplyr包实现(更简洁)

使用dplyr的管道语法可以一步完成分组和统计,代码可读性更强:

library(dplyr)

result_df <- mtcars %>%
  # 生成mpg区间分组
  mutate(mpg_group = cut(mpg, breaks = c(10,15,20,25,30,35), right = TRUE)) %>%
  # 按区间分组统计
  group_by(mpg_group) %>%
  summarise(
    观测总数 = n(),
    gear3或4数量 = sum(gear %in% c(3,4)) # 逻辑值求和等价于计数符合条件的样本
  ) %>%
  ungroup()

# 查看结果
print(result_df)

自定义区间说明

如果需要调整区间范围,只需修改cut()函数中的breaks参数即可。例如要划分成(0,10],(10,20],(20,30],(30,40],只需将breaks设为c(0,10,20,30,40)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:25:29