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

如何基于数值范围对R语言数据框变量分组并生成新列

问题解决方案

你的代码核心错误在于第二个条件的逻辑运算符使用错误:你用了|(逻辑或),这会把所有b9 >=4 或者 b9 <=7的行都标记为white,这会直接覆盖后续b9 >=9的判断(比如b9=9满足>=4,会被先匹配为white而非green)。正确的区间判断应该用&(逻辑与)来表示4到7之间(包含边界)。

修正后的代码

library(dplyr)

# 保留你定义的阈值变量
greater_threshold <- 2
greater_threshold1 <- 4
greater_threshold2 <- 7
greater_threshold3 <- 9

my_df1 <- my_df %>%
  mutate(NEW = case_when(
    b9 <= greater_threshold ~ "yellow",
    b9 >= greater_threshold1 & b9 <= greater_threshold2 ~ "white", # 替换|为&
    b9 >= greater_threshold3 ~ "green"
  ))

更简洁的写法(使用dplyr内置函数)

可以用between()函数直接指定区间,让逻辑更清晰:

my_df1 <- my_df %>%
  mutate(NEW = case_when(
    b9 <= 2 ~ "yellow",
    between(b9, 4, 7) ~ "white",
    b9 >= 9 ~ "green"
  ))

运行以上代码后,生成的my_df1的NEW列会完全符合你的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:22:25