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

使用dplyr的summarize函数按Site分组计算统计量报错求助

报错原因

代码存在语法结构错误:across() 函数需要将要应用的转换函数列表作为自身的第二个参数,但你错误地把函数列表写到了across()的括号外部,变成了summarise()的第二个独立参数。summarise()要求每个输入参数返回的结果长度要么是1(每组返回一个统计值),要么和分组行数一致,你传入的长度为4的函数列表不符合要求,因此触发报错。

可正常运行的代码

方案1:匹配原有逻辑(先把NA替换为0再计算)

library(dplyr)

data %>%
  replace(is.na(.), 0) %>%
  group_by(Site) %>%
  dplyr::summarise(
    across(
      c(OS_days, ster_days, pct_ster, first_ster_days, tot_bev_days, pct_bev, first_bev_days, SPD),
      # 给统计函数命名,生成的列名会自动带后缀更易读
      list(mean = mean, median = median, min = min, max = max)
    )
  )

方案2:更推荐的na.rm参数处理(无需修改原始值)

不需要提前将NA替换为0,直接在统计函数中加入na.rm = TRUE参数即可忽略缺失值计算,避免NA转0对统计结果的干扰:

library(dplyr)

data %>%
  group_by(Site) %>%
  dplyr::summarise(
    across(
      c(OS_days, ster_days, pct_ster, first_ster_days, tot_bev_days, pct_bev, first_bev_days, SPD),
      list(
        mean = ~mean(.x, na.rm = TRUE), 
        median = ~median(.x, na.rm = TRUE), 
        min = ~min(.x, na.rm = TRUE), 
        max = ~max(.x, na.rm = TRUE)
      )
    )
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 10:36:04