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

如何在R中使用pivot_longer与dplyr合并多列?

解决方案

先构造示例数据集:

library(dplyr)
library(tidyr)

# 原始数据集
df <- tibble(
  day = c("2021-01-01", "2021-01-02"),
  mean_depth = c(20.5, 15.5),
  depth_sd = c(5.2, 3.9),
  mean_temp = c(15.8, 15.6),
  temp_sd = c(3.8, 2.2)
)

通过**统一列名格式+pivot_longer**一步转换为目标格式:

df_transformed <- df %>%
  # 把depth_sd、temp_sd重命名为sd_depth、sd_temp,统一成「统计量_变量名」格式
  rename(sd_depth = depth_sd, sd_temp = temp_sd) %>%
  pivot_longer(
    cols = -day,  # 排除day列,转换其余所有列
    names_to = c(".value", "variable"),  # .value对应统计量(mean/sd)并生成对应列;variable对应变量名(depth/temp)
    names_pattern = "(mean|sd)_(.*)"  # 正则拆分列名:第一部分是mean/sd,第二部分是变量名
  )

转换后的结果:

dayvariablemeansd
2021-01-01depth20.55.2
2021-01-01temp15.83.8
2021-01-02depth15.53.9
2021-01-02temp15.62.2

关键逻辑说明

原始列名存在mean_变量和变量_sd两种格式,先通过rename统一为统计量_变量的规范格式,再用pivot_longer的正则匹配拆分列名,自动将均值、标准差归入对应列,同时提取变量名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:07:34