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

R语言dplyr调整left_join输出表的列名与删除指定列问题

调整后实现代码

library(dplyr)

# 原有数据集定义保持不变
df1 <- structure(list(date1 = c("2021-06-28", "2021-06-28", "2021-06-28", "2021-06-28"), date2 = c("2021-06-30", "2021-06-30", "2021-07-01", "2021-07-01"), Category = c("FDE", "ABC", "FDE", "ABC"), Week = c("Wednesday", "Wednesday", "Friday", "Friday"), DR1 = c(4, 1, 6, 3), DR01 = c(4, 1, 4, 3), DR02 = c(4, 2, 6, 2), DR03 = c(9, 5, 4, 7), DR04 = c(5, 4, 3, 2), DR05 = c(5, 4, 5, 4), DR06 = c(2, 4, 3, 2)), class = "data.frame", row.names = c(NA, -4L))

All <- structure(list(date2 = c("2021-06-30", "2021-06-30", "2021-07-01", "2021-07-01"), Category = c("FDE", "ABC", "FDE", "ABC"), coef = c(4L, 1L, 6L, 3L)), class = "data.frame", row.names = c("1", "2", "3", "4"))

# 核心处理逻辑
left_join(All, df1, by = c("date2", "Category")) %>%
  # 计算coef减DR0开头列,同时将列名重命名为Lag1~Lag6,无需额外加载其他包
  mutate(across(starts_with("DR0"), ~ coef - ., .names = "Lag{sub('DR0', '', .col)}")) %>%
  # 仅保留目标列,删除不需要的date1、Week、DR1、coef等字段
  select(date2, Category, Lag1:Lag6)

输出结果

date2 Category Lag1 Lag2 Lag3 Lag4 Lag5 Lag6
1 2021-06-30      FDE    0    0   -5   -1   -1    2
2 2021-06-30      ABC    0   -1   -4   -3   -3   -3
3 2021-07-01      FDE    2    0    2    3    1    3
4 2021-07-01      ABC    0    1   -4    1   -1    1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:45:07