R语言中如何根据向量元素的相近值分组并计算分组均值?
R实现相邻相近值分组替换为组均值
直接用基础R函数即可实现需求,无需加载第三方包,核心逻辑是通过相邻差值标记分组边界,再按组计算均值完成替换。
# 示例输入向量 x <- c(1.001, 1.002, 1.003, 2.0) # 分组阈值:相邻差值小于该值归为同组 threshold <- 0.1 # 生成分组标签:相邻差值≥阈值时拆分新组 group_id <- cumsum(c(1, abs(diff(x)) >= threshold)) # 按组计算均值,返回与原向量等长的替换结果 result <- ave(x, group_id, FUN = mean)
运行后得到的result和预期输出完全一致:
> result [1] 1.002 1.002 1.002 2.000
说明
- 若输入向量未按升序排列,需要先执行
x <- sort(x)再运行上述代码,否则相邻值判断会出错 - 可直接修改
threshold的取值适配不同的分组差值要求,其余代码无需调整 - 该方法对任意长度的数值型向量都适用,单组内元素数量不影响计算逻辑
内容的提问来源于stack exchange,提问作者Hees
相关产品推荐
相关产品推荐

