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

如何在R中将离散频率表合并为更少区间的汇总表

在R中实现基于units数量均衡的区间汇总及自定义区间合并

一、实现各区间units数量大致相等的汇总表

核心思路是基于units的累积和,用分位数切割分组,确保每组的units总和接近。以下是具体步骤(需加载dplyr包):

  1. 计算units的累积和并以此划分区间:
library(dplyr)

# 示例数据
table <- data.frame(number = c(1:10),
                   units = c(800, 780,500, 430, 200, 189, 110, 86, 54, 31))

# 按累积和分位数分组(示例分3组,可调整length.out数值改变分组数)
summary_table <- table %>%
  mutate(cum_units = cumsum(units)) %>%
  mutate(group = cut(cum_units, 
                     breaks = quantile(cum_units, probs = seq(0, 1, length.out = 4)),
                     include.lowest = TRUE)) %>%
  group_by(group) %>%
  summarise(
    number区间 = paste(min(number), max(number), sep = "-"),
    总units数量 = sum(units)
  )

print(summary_table)

运行后会得到每组的number区间和对应的units总和,各组units数量大致均衡。调整length.out的数值即可修改分组数量。

二、自定义区间合并

如果需要手动指定number的区间,可直接用cut()函数定义范围再汇总:

方法1:基础R实现

# 自定义区间(示例:1-3、4-6、7-10)
table$custom_interval <- cut(table$number, 
                             breaks = c(0, 3, 6, 10), 
                             labels = c("1-3", "4-6", "7-10"),
                             include.lowest = TRUE)

# 汇总自定义区间的units总和
custom_summary <- aggregate(units ~ custom_interval, data = table, sum)
print(custom_summary)

方法2:dplyr实现

custom_summary <- table %>%
  mutate(custom_interval = cut(number, 
                               breaks = c(0, 3, 6, 10), 
                               labels = c("1-3", "4-6", "7-10"),
                               include.lowest = TRUE)) %>%
  group_by(custom_interval) %>%
  summarise(总units数量 = sum(units))

print(custom_summary)

可根据需求修改breaks和labels参数,自定义任意区间范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:07:15