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

R中如何使用pivot_longer()同时透视数据生成两个目标列

实现方案

你可以直接用pivot_longer的内置特殊参数.value完成需求,不需要分步骤操作,完整代码如下:

# 加载tidyr包
library(tidyr)

df_long <- df %>%
  pivot_longer(
    cols = -id,
    names_to = c("variable", ".value"),
    names_sep = "\\."
  ) %>%
  rename(activation = act, fixation = fix)

运行后打印df_long即可得到你需要的目标格式:

> df_long
# A tibble: 4 × 4
     id variable activation fixation
  <dbl> <chr>         <dbl>    <dbl>
1     1 v1              0.4        1
2     1 v2              0.5        0
3     2 v1              0.8        0
4     2 v2              0.7        1

参数说明

  • cols = -id:指定保留id列为标识列,其余所有列参与长宽转换
  • names_to = c("variable", ".value"):其中.value是pivot_longer的特殊参数,表示拆分列名得到的第二部分会直接作为新的数据列名,替代默认的name+value列结构
  • names_sep = "\\.":指定用.作为列名的拆分符号,把v1.act这类列名拆分为v1和act两部分
  • 最后的rename步骤仅用来把拆分得到的act、fix列重命名为你需要的activation、fixation

如果需要更严谨的列名匹配,也可以用names_pattern参数传入正则表达式实现拆分,写法如下:

df %>%
  pivot_longer(
    cols = -id,
    names_to = c("variable", ".value"),
    names_pattern = "(v\\d)\\.(act|fix)"
  ) %>%
  rename(activation = act, fixation = fix)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:54:03