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

如何按年份合并tibble指定行并求和重命名?

解决方法:合并指定行并按年份求和

方法一:使用tidyverse(dplyr)

因为你用的是tibble,用dplyr的管道操作会更直观,步骤如下:

  1. 构造示例数据(已有数据可跳过):
library(tibble)
library(dplyr)

df <- tibble(
  Year = c(1969,1969,1969,1970,1970,1970,1971,1971,1971),
  Name = c("Alice","Bob","Charlie","Alice","Bob","Charlie","Alice","Bob","Charlie"),
  n = c(24,25,33,13,20,10,23,10,16)
)
  1. 数据处理:
result <- df %>%
  # 将Bob和Charlie替换为Derek,保留Alice不变
  mutate(Name = case_when(
    Name %in% c("Bob", "Charlie") ~ "Derek",
    TRUE ~ Name
  )) %>%
  # 按年份和新的Name分组,对n求和
  group_by(Year, Name) %>%
  summarise(n = sum(n), .groups = "drop")

运行后得到的result就是目标表格:

# A tibble: 6 × 3
   Year Name      n
  <dbl> <chr> <dbl>
1  1969 Alice    24
2  1969 Derek    58
3  1970 Alice    13
4  1970 Derek    30
5  1971 Alice    23
6  1971 Derek    26

方法二:使用Base R

如果不想加载额外包,用base R也能实现:

# 先替换Name列
df$Name[df$Name %in% c("Bob", "Charlie")] <- "Derek"
# 按Year和Name分组求和
result_base <- aggregate(n ~ Year + Name, data = df, sum)

之前尝试失败的可能原因

  • 用case_when时,可能没完成Name替换就直接聚合,导致分组逻辑错误;
  • 用aggregate时,没有先将Bob和Charlie统一替换为Derek,无法正确合并目标行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:40:17