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

R语言中使用dcast时,如何通过fun.aggregate获取分组中间值?

解决方案

先拆解目标结果的规律:

  • A的VAR1组原始值[1,6,7],取升序排序后的倒数第二个元素(6);
  • B的VAR1组原始值[2,5],取升序排序后的倒数第二个元素(2);
  • C的VAR1组仅一个值,直接取该值;
  • 无对应数据的列(B、C的VAR2)填充0。

基于这个规律,自定义聚合函数,再结合dcast的fill参数实现需求:

# 自定义聚合函数:升序排序后取倒数第二个元素,元素数量不足2则取唯一值
custom_agg <- function(x) {
  sorted_x <- sort(x)
  if (length(sorted_x) >= 2) {
    return(sorted_x[length(sorted_x) - 1])
  } else {
    return(sorted_x[1])
  }
}

# 执行dcast,指定fill=0填充缺失值
result <- dcast(dataframe, col1~var, value.var="value", fun.aggregate=custom_agg, fill=0)

运行后就能得到完全匹配目标的输出结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:03:30