多条件case_when在R

0

的问题

我想添加一个新的栏(彩色)到我的数据框架。 值在行取决于价值观在其他两个列。 例如,当类价值等于4和Metro_status值等于坐地铁,我想要一个特定的价值返回,在中相应的行新列。 我试图这样做case_when使用dplyr和它的工作...的程度。

大多数的色彩值的输出成的颜色列不符合该定义的条件。 例如,第一行(Nome人口普查地区)颜色的价值应该是 "#fcc48b" 但不是是 "#d68182".

我在做什么错了?? TIA!

这是我的代号:

#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 | Metro_status == 'NA' ~ '#7a7a7a'
    ))
  
  View(updated_county_data)
  
  write.csv(updated_county_data, file="county_data_manip/updated_county_data.csv")

这里是什么样的数据框架看起来像 enter image description here

case data-manipulation dplyr r
2021-11-23 23:02:04
1

最好的答案

0

注1:

当类价值等于4 第Metro_status值等于地铁

在R(和许多编程语言) & 是的",并"。 你使用 |,这是"或者"。

注2: 考虑简化第四行中的两个,由于地铁的状态并不影响色课4和3

注3: 计算 class考虑 base::cut()因为这是足够的,但不是简单 dplyr::case_when().

这是我的喜好时,不断升级的复杂程度重新编码的职能: https://ouhscbbmc.github.io/data-science-practices-1/coding.html#coding-simplify-recoding

注4: 这是一个很好的如此后期,但是看看你是否能提高你的下一个。 读和将元素 如何使一个伟大的R可重复的例子吗?. 尤其是该方面的使用 dput() 用于输入和随后的一个明确的例子你预期的数据集。

2021-11-23 23:41:07

还有,只是添加一些额外的颜色为什么OPs版本的行为方式,第一线的两个开始 class == 4 返回的真正用于所有组合 ClassMetro_Status 除了 Metro_Status == "NA"
Mako212

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................