Multi podmíněné case_when v R

0

Otázka

Snažím se přidat nový sloupec (barva), aby mé údaje rám. Hodnota v řádku závisí na hodnoty v dalších dvou sloupcích. Například, když třída hodnota je rovna 4 a Metro_status hodnota je rovna Metro, já chci konkrétní hodnota vrácena v odpovídajícím řádku v novém sloupci. Snažil jsem se dělat to s case_when pomocí dplyr a fungovalo to... do jisté míry.

Většina barevných hodnot výstup do sloupce barva nesedí s definovanými podmínkami. Například, první řádky (Nome Census Area) barva hodnota by měla být "#fcc48b" ale místo toho je "#d68182".

Co dělám špatně?? TIA!

Tady je můj kód:

#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")

Tady je to, co údaje rám vypadá enter image description here

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

Nejlepší odpověď

0

Poznámka 1:

když třída hodnota je rovna 4 a na Metro_status hodnota je rovna Metro

V R (a mnoho programovacích jazyků) & je "a". Používáte |, který je "nebo".

Poznámka 2: Zvážit zjednodušení první čtyři řádky na dva, protože Metro stav nemá vliv na barvu pro třídy 4 & 3

Poznámka 3: Pro výpočet classzvažte base::cut(),, protože je to adekvátní, ještě jednodušší, než dplyr::case_when().

Tady je moje přednost, když stupňující se složitosti překódování funkce: https://ouhscbbmc.github.io/data-science-practices-1/coding.html#coding-simplify-recoding

Poznámka 4: To bylo dobrý, TAKŽE post, ale uvidíme, jestli si můžete zlepšit své další. Přečtěte si a začlenit prvky z Jak velký R reprodukovatelné příklad?. Zejména aspekty použití dput() za vstup a pak explicitní příklad očekávaného dataset.

2021-11-23 23:41:07

Také, jen přidat nějaké další barevné proč OPs verze se chová tak, jak to dělá, první dva řádky, které začínají class == 4 vrátí TRUE pro všechny kombinace Class a Metro_Status s výjimkou Metro_Status == "NA"
Mako212

V jiných jazycích

Tato stránka je v jiných jazycích

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