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

基于列名正则匹配选择含Value的列执行diff操作生成新列

批量处理含"Value"的列并生成指定格式新列

示例数据集

ff <- data.frame(
       id = c(1:4),
       w1...33112..Value = c(10, 20, 30, 40),
       w1...33112..Time = c(4, 3, 2, 1),
       w2...33113..Value = c(1, .9, .75, .7),
       w2...33113..Time = c(10, 50, 30, 20),
       w3...33552..Value = c(1, 2, 3, 4),
       w3...33552..Time = c(.5, .5, .9, .9),
       w4...33442..Value = c(100, 50, 40, 30),
       w4...33442..Time = c(2, 1, 4, 3),
       w5...35692..Value = c(.5, .6, .7, .8)
       )

需求

批量选择列名包含"Value"的列,对每列执行c(0, diff(.))操作(开头补0,后续为相邻行的差值),生成的新列名为原列名第一个点之前的字符串 + ".used"(比如w1...33112..Value对应新列w1.used)。

解决方案

使用dplyr的across函数可以高效实现批量处理,无需手动逐个列编写代码:

library(dplyr)

ff.2 <- ff %>%
  mutate(
    # 筛选所有含"Value"的列
    across(contains("Value"), 
           # 执行差分操作,开头补0
           ~ c(0, diff(.)), 
           # 按规则生成新列名:提取原列名第一个点前的部分,拼接".used"
           .names = "{sub('\\..*', '', .col)}.used")
  )

代码说明

  • contains("Value"):自动匹配所有列名包含"Value"的目标列,无需手动列举
  • ~ c(0, diff(.)):对每列执行差分操作,开头补0保证新列行数与原数据一致
  • sub('\\..*', '', .col):通过正则表达式提取原列名的前缀(第一个点之前的内容,如w1、w2),结合.names参数生成指定格式的新列名

输出结果

运行后ff.2会包含所有原列,以及新增的w1.used、w2.used等列:

> ff.2
  id w1...33112..Value w1...33112..Time w2...33113..Value w2...33113..Time w3...33552..Value w3...33552..Time w4...33442..Value w4...33442..Time w5...35692..Value w1.used w2.used w3.used w4.used w5.used
1  1                10                4               1.0               10                1              0.5               100                2               0.5     0.0    0.00     0.0    0.00     0.0
2  2                20                3               0.9               50                2              0.5                50                1               0.6    10.0   -0.10     1.0  -50.00     0.1
3  3                30                2               0.75              30                3              0.9                40                4               0.7    10.0   -0.15     1.0  -10.00     0.1
4  4                40                1               0.70              20                4              0.9                30                3               0.8    10.0   -0.05     1.0  -10.00     0.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:57:46