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

如何在R中将长格式DataFrame的年份列按ID转为有序宽格式?

R语言实现长格式DataFrame按年份排序转宽格式

先构造一个匹配需求的示例数据,方便验证方法:

library(tidyverse)

df <- tibble(
  ID = c(1,1,2,2,2,3),
  Thing = c("A","A","B","B","B","C"),
  Year = c(2020,2022,2019,2021,2023,2020)
)

你之前的问题大概率是没做分组内的年份排序与序号生成,核心操作要先按ID分组整理年份顺序,再转宽:

wide_df <- df %>%
  group_by(ID) %>%
  arrange(Year, .by_group = TRUE) %>%  # 按ID分组后,对年份从小到大排序
  mutate(year_col = paste0("Year", row_number())) %>%  # 生成Year1、Year2等有序列名
  pivot_wider(
    id_cols = c(ID, Thing),  # 保留ID和Thing作为每行唯一标识
    names_from = year_col,
    values_from = Year,
    values_fill = NA  # 年份不足的位置自动填充NA
  ) %>%
  ungroup()

# 查看转换结果
print(wide_df)

运行后会得到每个ID一行、Thing列保留,年份按从小到大依次对应Year1、Year2等列的宽格式DataFrame,缺失位置自动填充NA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:22:49