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

使用pivot_longer的.names_to=.value时,能否为生成列名添加前缀?

在pivot_longer中使用.value时如何内置添加列名前缀?

目前pivot_longer并没有专门的内置参数直接为.value生成的列名添加前缀,但可以通过names_glue参数结合正则捕获实现这个需求,不需要后续调用rename_with。

具体实现方法

利用names_glue对.value对应的捕获组进行字符串拼接,直接生成带前缀的列名:

library(tidyverse)

df <- tibble(x1 = 0.1, x2 = 0.2, y1 = 0.05, y2 = 0.15)
df %>%
  pivot_longer(cols = everything(),
               names_to = c('coord_type', '.value'),
               names_pattern = '(\\D+)(\\d+)',
               names_glue = c(coord_type = "{1}", .value = "coord_{2}"))

执行后会直接生成coord_type、coord_1、coord_2三列,其中coord_1和coord_2就是带前缀的目标列。

补充说明

你原本使用rename_with的方法是完全可行的,但通过names_glue可以在透视一步中完成列名修改,流程更简洁。names_glue的作用是将names_pattern捕获的各组内容,按照指定格式拼接成names_to中对应元素的取值——对于.value来说,这个取值就是最终生成的列名,因此可以在这里直接添加前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:01:03