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

如何在R tidyverse中基于sp列批量创建192个对比列?

在tidyverse中批量生成对比列的解决方案

需求说明

基于数据集的sp列,参照mp_comp_1的生成逻辑(判断mp_*列值与sp的大小关系,返回"bigger"/"smaller"/"equal"),为所有mp_1到mp_192列批量生成对应的mp_comp_*对比列。

实现代码

library(tidyverse)

# 构造示例数据集(模拟含sp、mp_1至mp_192的结构)
df <- tibble(
  sp = c(34.9, 34.3, 34.4),
  mp_1 = c(35, 32.1, 34.4),
  mp_2 = c(30, 38.1, 39.4),
  mp_192 = c(34.9, 34.3, 30.4)
  # 实际场景中补充mp_3至mp_191列即可
)

# 批量生成对比列
df_processed <- df %>%
  mutate(
    across(
      .cols = starts_with("mp_"),  # 选中所有mp_开头的列
      .fns = ~if_else(.x > sp, "bigger", 
                      if_else(.x < sp, "smaller", "equal")),  # 核心对比逻辑
      .names = "mp_comp_{str_remove(.col, 'mp_')}"  # 自动生成新列名
    )
  )

关键说明

  • across():tidyverse中批量处理多列的核心函数,无需重复编写相同逻辑
  • starts_with("mp_"):精准筛选所有目标mp_*列,避免手动枚举192个列名
  • .names参数:通过str_remove()将原列名的mp_前缀替换为mp_comp_,保证mp_N对应mp_comp_N的命名一致性
  • 逻辑复用:对比规则只需定义一次,自动应用到所有192个mp_*列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:35:03