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

求助:将宽格式数据转换为长格式dataframe的方法

解决方案

要将宽格式数据转换为长格式,用tidyr包的pivot_longer()函数是最直接的方法,比单纯用dplyr分组更高效。以下是具体步骤:

1. 加载依赖包

首先确保安装并加载tidyverse(包含dplyr和tidyr):

install.packages("tidyverse")
library(tidyverse)

2. 转换为长格式

假设你的原始数据框名为df,包含Sample列(分组标识)和多个带时间后缀的数值列(如Time1、Time2、Time3),执行以下代码:

df_long <- df %>%
  pivot_longer(
    cols = starts_with("Time"),  # 选中所有以Time开头的列(可根据实际列名调整)
    names_to = "Time",           # 原列名转为新的类别列名
    values_to = "Value"          # 原列中的数值存入新的数值列
  )

可选:清洗Time列

如果需要把Time列的文字前缀去掉,只保留数字,添加mutate()处理:

df_long <- df %>%
  pivot_longer(
    cols = starts_with("Time"),
    names_to = "Time",
    values_to = "Value"
  ) %>%
  mutate(Time = parse_number(Time))  # 提取列名中的数字

自定义列选择

如果你的数值列不是以Time开头,可灵活调整cols参数:

  • 排除Sample列,转换其他所有列:cols = -Sample
  • 匹配带数字的列(如T1、T2):cols = matches("T\\d+")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:06:03