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

R中按objid分组通过mutate实现CASE WHEN条件判断生成新列的方法咨询

R语言多表关联批量条件判断实现方案

实现思路

  • 先通过左连接将每个objid对应的参考阈值匹配到主表,无需单独分组关联,性能更高
  • 批量对所有指标列做条件判断,逻辑值直接转整数即可得到0/1标记,无需编写重复的条件语句
  • 自动按要求生成新列名,支持扩展更多指标列无需修改代码逻辑

完整实现代码

首先加载依赖包:

library(dplyr)

主处理代码:

result <- data_1 %>%
  # 按objid关联参考阈值表
  left_join(data_2, by = "objid") %>%
  # 批量生成标记列
  mutate(across(c(x1, x2, x3),
                ~ as.integer(. <= .data[[paste0(cur_column(), "_r")]]),
                .names = "{col}_r_fin"))

如果需要移除中间的x1_r/x2_r/x3_r列,可以在代码末尾加一行select(-ends_with("_r"))即可。

如果使用1.0.0以前的旧版本dplyr,可以使用mutate_at写法:

result <- data_1 %>%
  left_join(data_2, by = "objid") %>%
  mutate_at(vars(x1, x2, x3),
            list(r_fin = ~ as.integer(. <= .data[[paste0(cur_column(), "_r")]])))

输出样例

最终输出结果结构如下:

objidx1x2x3x1_rx2_rx3_rx1_r_finx2_r_finx3_r_fin
17561.541.141.58000
24220.231.230.23000
34831.329.327.32011
499411.661.267.66101
421211.661.267.66111
25320.231.230.23000
482711.661.267.66101

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:03