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

如何将R语言中的宽格式数据集转换为长格式?

将宽格式数据集转换为长格式的R实现

你可以使用tidyverse包中的pivot_longer函数轻松完成宽转长的操作,以下是具体步骤:

  1. 首先确保安装并加载tidyverse包:
# 如果未安装tidyverse,先执行安装
# install.packages("tidyverse")
library(tidyverse)
  1. 运行转换代码:
# 转换宽格式df1为长格式
df_long <- df1 %>%
  pivot_longer(
    cols = starts_with("yr"),  # 选择所有以"yr"开头的列
    names_to = c("index", ".value"),
    names_pattern = "yr(\\d)(.*)"  # 按"yr+数字+后缀"的规则拆分变量名
  ) %>%
  rename(yr_time = `_time`) %>%  # 将拆分后的_time列重命名为yr_time
  select(id, yr, yr_time) %>%  # 保留需要的三列
  arrange(id, yr)  # 按id和年份排序,让结果更整洁
  1. 查看转换后的结果:
print(df_long)

代码说明:

  • cols = starts_with("yr"):指定要转换的列是所有以"yr"开头的列(即yr1、yr1_time、yr2、yr2_time、yr3、yr3_time)。
  • names_pattern = "yr(\\d)(.*)":用正则表达式匹配变量名,捕获两个部分:第一部分是数字(1/2/3),第二部分是后缀(空或_time)。
  • names_to = c("index", ".value"):将捕获的数字存入临时列index,后缀部分作为新列的名称(空对应yr列,_time对应_time列)。
  • rename(yr_time = _time):把默认生成的_time列重命名为目标格式中的yr_time。

转换后的数据集就会呈现你需要的长格式,每个id对应多行记录,每行包含年份和对应的时长值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:40:34