Multi condiționată case_when în R

0

Problema

Am încercat să adăugați o nouă coloană (de culoare) cu datele mele de cadru. Valoarea în rând depinde de valorile din alte două coloane. De exemplu, atunci când valoarea de clasă este egal cu 4 și Metro_status valoare este egală cu Metroul, vreau o anumită valoare a revenit în rândul corespunzător în noua coloană. Am încercat să fac acest lucru cu case_when folosind dplyr si a mers... până la un punct.

Majoritatea valori de culoare scoase în culoarea coloana nu se aliniază cu condiții definite. De exemplu, în primele rânduri (Nome Census Area) valoarea de culoare ar trebui să fie "#fcc48b" dar, în schimb, este "#d68182".

Ce fac gresit?? TIA!

Aici e codul meu:

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

Aici e ceea ce cadru de date arata ca enter image description here

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

Cel mai bun răspuns

0

Remarca 1:

atunci când valoarea de clasă este egal cu 4 și la Metro_status valoare este egală cu Metrou

În R (și multe limbaje de programare) & este "și". Utilizați |, care este "sau".

Remarca 2: Ia în considerare simplificarea primele patru linii pentru a doua, deoarece starea de Metrou nu afectează culoarea pentru clasele 4 și 3

Remarca 3: Pentru a calcula class, ia în considerare base::cut(), pentru că este adecvat, dar mai simplă decât dplyr::case_when().

Aici e preferința mea când escaladarea complexitatea recodare funcții: https://ouhscbbmc.github.io/data-science-practices-1/coding.html#coding-simplify-recoding

Observația 4: Acest lucru a fost un bun ATÂT de post, dar a se vedea dacă vă puteți îmbunătăți următoarea. Citește și încorporează elemente de Modul de a face un mare R reproductibile exemplu?. Mai ales aspectele legate de utilizarea dput() pentru intrare și apoi o explicită exemplu de set de date.

2021-11-23 23:41:07

De asemenea, doar pentru a adăuga unele de culoare suplimentare ce OPs versiune se comportă așa cum o face, primele două linii care încep class == 4 return TRUE pentru toate combinațiile de Class și Metro_Status cu excepția Metro_Status == "NA"
Mako212

În alte limbi

Această pagină este în alte limbi

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