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

R中如何基于数值变量阈值序列批量创建多个新逻辑列

解决方案

你不需要逐列手动编写mutate判断语句,利用dplyr对命名列表输入的支持,几行代码就能批量生成1到24阈值对应的所有逻辑列,结果和手动编写完全一致,后续调整阈值范围也只需要改一个参数。

首先加载依赖、构造测试数据:

library(tidyverse)
set.seed(1988)

test <- tibble(
  survival = c(sample(1:40,10, replace =T))
)

核心实现代码

直接构造带列名的判断逻辑列表传入mutate即可一次性生成全部目标列:

test_res <- test %>%
  mutate(
    setNames(
      map(1:24, ~ survival > .x),
      paste0("survival", 1:24)
    )
  )

代码说明

  • map(1:24, ~ survival > .x):遍历1到24的阈值,为每个阈值生成一个判断逻辑向量,判断当前行survival值是否大于阈值
  • setNames(...):给每个逻辑向量绑定对应的列名,从survival1一直到survival24
  • 传入mutate后会自动把列表中每个向量作为新列追加到原数据框,不会修改原有列

结果校验

你可以和手动生成的前两列做一致性校验,确认结果完全匹配:

# 手动生成前两列作为对照
test_manual <- test %>% 
  mutate(survival1 = survival > 1, survival2 = survival > 2)

# 对比批量生成的前两列和手动生成结果
identical(select(test_res, survival1, survival2), select(test_manual, survival1, survival2))
# 控制台返回 TRUE,说明结果完全一致

如果后续需要调整阈值范围,比如要扩展到1到60的阈值,只需要把代码里的1:24替换成目标阈值序列即可,不需要逐行新增mutate语句。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:09:18