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

基于ID聚合观测值求和生成新变量的R实现方法

解决方法

你的代码有两个核心问题:

  1. 用了mutate而非summarise:mutate会保留分组后的所有行并新增列,而你需要把每个ID的多行压缩成一行,必须用summarise。
  2. starts_with用法错误:这个函数一次只能接受一个前缀参数,不能直接传多个前缀。

下面是两种可行的修正方案:

方案一:用正则表达式匹配多前缀

用正则表达式^[FTB]匹配所有以F、T、B开头的列,代码如下:

aggregated_df3 <- aggregated_df2 %>%
  group_by(ID) %>%
  summarise(across(matches("^[FTB]"), ~ sum(.x, na.rm = TRUE)), .groups = "drop")

方案二:组合多个starts_with选择器

把多个starts_with用c()组合起来,实现多前缀匹配:

aggregated_df3 <- aggregated_df2 %>%
  group_by(ID) %>%
  summarise(across(c(starts_with("F"), starts_with("T"), starts_with("B")), ~ sum(.x, na.rm = TRUE)), .groups = "drop")

额外补充:对ID外所有列求和

如果你的需求是对除ID之外的所有列求和(无需指定前缀),可以直接写:

aggregated_df3 <- aggregated_df2 %>%
  group_by(ID) %>%
  summarise(across(-ID, ~ sum(.x, na.rm = TRUE)), .groups = "drop")

说明:.groups = "drop"用来在聚合后取消分组状态,避免后续操作出现分组相关的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:32:45