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

R语言计算列值差值:生成DX与各DR列差值对应的PV变量

R实现DX与各DR列差值计算生成PV变量

两种常用实现方式如下:

方法1:dplyr实现(推荐,代码简洁易维护)

核心使用across()批量处理所有DR开头的列,自动生成对应PV列:

# 加载包
library(dplyr)
library(stringr)

# 计算生成PV列
df_with_pv <- df %>%
  mutate(across(starts_with("DR"), ~ DX - .x, .names = "PV{str_remove(.col, 'DR')}"))

参数说明:

  • starts_with("DR"):选中所有列名以DR开头的字段,不需要手动指定DR0到DR5
  • .names = "PV{str_remove(.col, 'DR')}":将生成的新列命名为PV+原DR列的后缀,比如DR0对应PV0、DR1对应PV1
  • 若不想额外加载stringr包,可将.names参数修改为:.names = "PV{sub('DR', '', .col)}"

方法2:Base R实现,无需安装加载额外包

# 识别所有DR列和要生成的PV列名
dr_cols <- grep("^DR", colnames(df), value = TRUE)
pv_cols <- sub("DR", "PV", dr_cols)

# 批量计算差值
df[pv_cols] <- df$DX - df[dr_cols]

结果验证

取你给出的示例行(2021年1月3日Super房型)查看输出:

df_with_pv[df_with_pv$date == "03-01-2021" & df_with_pv$Room == "Super", 
           c("date", "Room", "DX", "DR0", "PV0", "DR1", "PV1", "DR2", "PV2")]

输出结果如下,完全符合规则要求:

date  Room DX DR0 PV0 DR1 PV1 DR2 PV2
14 03-01-2021 Super 25  19   6  19   6  23   2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:27:03