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

如何在R中按年份数量重复数据框行并添加Year列?

在R中为数据框添加年份列并重复每行的方法

首先构造示例数据和指定年份向量:

# 示例数据框
df <- data.frame(
  FirstName = c("Jim", "Amy", "Ravi"),
  MiddleName = c("J", "K", "M"),
  LastName = c("Jon", "White", "Khanna")
)

# 需要的年份向量
target_years <- c(2020, 2021, 2022)

以下是三种常用的实现方式:

方法1:基础R原生实现

无需额外安装包,通过行索引重复和列拼接完成:

# 重复每行,次数等于年份的数量
df_repeated <- df[rep(seq_len(nrow(df)), each = length(target_years)), ]
# 添加Year列,将年份向量重复对应次数
df_repeated$Year <- rep(target_years, nrow(df))
# 重置行名(可选,让结果更整洁)
rownames(df_repeated) <- NULL

方法2:使用tidyverse工具链

借助dplyr和tidyr的函数,代码更简洁易读:

library(tidyverse)

df_result <- df %>%
  # 生成原数据与年份的所有组合(笛卡尔积)
  crossing(Year = target_years) %>%
  # 保持原数据的姓名顺序(可选,匹配示例输出的顺序)
  arrange(match(FirstName, df$FirstName))

方法3:使用data.table包

适合处理大数据集,运行效率更高:

library(data.table)

setDT(df)
df_result <- df[, .(Year = target_years), by = .(FirstName, MiddleName, LastName)]

以上三种方法都能生成你需要的结果,可根据自己的包使用习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:48:26