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

如何在R中直接基于≥100和≥75的阈值创建分类列?

R语言:直接使用≥100/≥75阈值创建新列的实现方法

问题背景

现有如下R语言data.frame数据集:

my_df <- data.frame(
    b1 = c(2, 6, 3, 6, 4, 2, 1, 9, NA), 
    b2 = c(100, 4, 106, 102, 6, 6, 1, 1, 7), 
    b3 = c(75, 79, 8, 0, 2, 3, 9, 5, 80), 
    b4 = c(NA, 6, NA, 10, 12, 8, 3, 6, 2),
    b5 = c(2, 12, 1, 7, 8, 5, 5, 6, NA),
    b6 = c(9, 2, 4, 6, 7, 6, 6, 7, 9),
    b7 = c(1, 3, 7, 7, 4, 2, 2, 9, 5),
    b8 = c(NA, 8, 4, 5, 1, 4, 1, 3, 6),
    b9 = c(4, 5, 7, 9, 5, 1, 1, 2, NA),
    b10 = c(14, 2, 4, 2, 1, 1, 1, 1, 5))

需要创建名为NEW的新列,规则为:当b2≥100 或 b3≥75时取值"BLUE",否则取值"RED"。目前通过设置略低于目标值的阈值(99.9和74.9),使用tidyverse的case_when函数实现了需求,想确认是否可以直接使用≥100和≥75的阈值来完成该操作。

解决方案

当然可以直接使用≥100和≥75的阈值实现需求,完全不需要用略低的替代值。以下是两种常用实现方式:

1. Tidyverse 方案(case_when)

直接在条件中写入b2 >= 100 | b3 >=75即可,代码如下:

library(tidyverse)

my_df <- my_df %>%
  mutate(NEW = case_when(
    b2 >= 100 | b3 >= 75 ~ "BLUE",
    TRUE ~ "RED"
  ))

2. Base R 方案(ifelse)

如果不想加载tidyverse包,也可以用base R的向量化判断快速生成新列:

my_df$NEW <- ifelse(my_df$b2 >= 100 | my_df$b3 >=75, "BLUE", "RED")

验证结果

执行上述代码后,查看NEW列的结果:

print(my_df$NEW)
# 输出:[1] "BLUE" "BLUE" "BLUE" "BLUE" "RED"  "RED"  "RED"  "RED"  "BLUE"

完全符合规则:第1行(b2=100、b3=75)、第2行(b3=79)、第3行(b2=106)、第4行(b2=102)、第9行(b3=80)均标记为"BLUE",其余行标记为"RED"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:25:26