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

R使用dplyr的case_when多条件赋值时结果不符合预期如何解决

错误原因

你代码里的核心问题是逻辑运算符使用错误,以及缺失值判断写法不对:

  • 你需要同时满足class值和Metro_status值两个条件,应该使用逻辑与运算符&,但你代码里全部写的是逻辑或运算符|,只要两个条件满足任意一个就会触发对应赋值,自然和预期结果不符。
  • 缺失值判断不能用== 'NA',该写法是判断值为字符串"NA",如果是R里的真实缺失值,需要用is.na(Metro_status)判断。

修正后代码

#set working directory
setwd("C:/Users/weirc/OneDrive/Desktop/Undergrad Courses/Fall 2021 Classes/GHY 3814/final project/data")
      
#load packages
library(readr)
library(dplyr)
      
#load data
counties <- read_csv("vaxData_counties.csv")
      
#create new column for class
updated_county_data <- counties %>%
  mutate(class = case_when(
    Series_Complete >=75 ~ 4,
    Series_Complete >= 50 ~ 3,
    Series_Complete >= 25 ~ 2,
    TRUE ~ 1
  ), color = case_when(
    class == 4 & Metro_status == 'Metro' ~ '#d62023',
    class == 4 & Metro_status == 'Non-metro' ~ '#d68182',
    class == 3 & Metro_status == 'Metro' ~ '#fc9126',
    class == 3 & Metro_status == 'Non-metro' ~ '#fcc48b',
    class == 2 & Metro_status == 'Metro' ~ '#83d921',
    class == 2 & Metro_status == 'Non-metro' ~ '#abd977',
    class == 1 | is.na(Metro_status) ~ '#7a7a7a'
  ))

View(updated_county_data)

write.csv(updated_county_data, file="county_data_manip/updated_county_data.csv")

注:若最后一个条件的逻辑是需要同时满足class=1且Metro_status为缺失值,把对应行的|换成&即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:45:03