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

R语言数据帧中按height区间计算对应power最大值的实现方法

R语言height字段固定步长分箱、计算对应power组最大值的实现

原示例代码语法修正

你提供的示例代码存在两处会直接导致运行报错的问题,修正后的基础数据构造代码如下:

# 构造基础数据集
date <- c("9-1-2020","10-1-2020","11-12-2020","12-1-2020")
height <- c(32.2,32.3,48,35.2)
# 原代码此处误写为power<-(9,10,14,15),R中创建向量必须使用c()函数
power <- c(9,10,14,15)
# 直接构造数据框,避免cbind拼接后所有列被强制转为字符类型
data <- data.frame(date, height, power)

实现规则说明

  • 分箱范围:height取值区间固定为32~48,步长0.3,生成连续衔接的分箱边界
  • 输出格式:最终生成的新数据框中,height列存储每个分箱的区间中心值(即区间上下界的算术平均);power字段单位为10MB,无需做单位转换,直接存储对应分箱内的power最大值即可
  • 空区间处理:没有观测值的分箱,对应power值默认为NA,不会被直接丢弃

完整可运行代码

# 生成连续分箱边界
bin_breaks <- seq(from = 32, to = 48, by = 0.3)
# 为每个height值匹配所属分箱
data$bin_group <- cut(
  x = data$height,
  breaks = bin_breaks,
  include.lowest = TRUE, # 保证最左侧的32值能被纳入第一个分箱
  right = TRUE # 区间形式为左开右闭,可根据实际需求调整区间开闭规则
)
# 分组聚合计算power最大值,保留所有空分箱
library(dplyr)
result <- data %>%
  group_by(bin_group, .drop = FALSE) %>% 
  summarise(power_max = max(power, na.rm = TRUE)) %>%
  ungroup()
# 计算每个分箱的中心值
result$height <- (
  bin_breaks[-length(bin_breaks)] + bin_breaks[-1]
) / 2
# 整理最终输出的数据框列顺序
final_result <- result[, c("height", "power_max")]

计算结果校验

以区间[32, 32.3]为例:区间内包含height=32.2、height=32.3两个观测,对应power分别为9、10,区间中心值为(32+32.3)/2=32.15,对应power最大值为10,与代码计算结果一致。

调整分箱范围、步长时,只需修改bin_breaks的起止参数与步长值;调整区间开闭规则时,修改cut()函数的right参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 14:06:05