Citirea formatării condiționate în fișierele XLSX într -un mod ordonat cu Readxl

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe pacha.dev/blogși a contribuit cu drag la R-Bloggers). (Puteți raporta problema despre conținutul de pe această pagină aici)


Doriți să vă împărtășiți conținutul pe R-Bloggers? Faceți clic aici dacă aveți un blog sau aici dacă nu.

Continuând cu postarea anterioară, am găsit o problemă suplimentară de organizare a datelor: folosind format condiționat ca informații.

Ca toate instrumentele (r incluse), foile de calcul sunt bune atunci când sunt utilizate corect. Formatele condiționale oferă ghiduri vizuale, dar există modalități mai bune de a exprima categorii precum „deasupra mediei” (de exemplu, folosind „vLookup” pentru a adăuga clar categorii la tabele).

Gândiți -vă la setul de date GapMinder. Dacă în loc de asta:

Obțineți asta:

Apoi, fără foaia „bună”, aveți nevoie de informații suplimentare care nu sunt prezente în fișier pentru a ști ce înseamnă culorile din „Lifeexp”. În acest caz, culoarea este folosită pentru a exprima dacă țara în cauză are o speranță de viață peste sau sub media continentului. Acest lucru ar putea fi ghicit dedicând timp pentru a explora datele, care pot consuma mult timp și poate duce la concluzii greșite.

Modificările pe care le -am făcut în pachetul Readxl anterior nu pot citi culorile create dinamic cu formatare condiționată și a trebuit să -mi extind cererea de tragere.

Noua modificare modifică codul C ++, astfel încât suplimentar extract_colors parametru în read_excel()și acum permite să facă acest lucru:

file <- readxl_example("gapminder-2007.xlsx")

# using the new functionality
bad_data <- read_excel(file, sheet = "bad", extract_colors = TRUE)

> bad_data                                                                    
# A tibble: 142 × 7
   country                   year lifeExp    pop gdpPercap country_bg lifeExp_bg
                                             
 1 Algeria                   2007    72.3 3.33e7     6223. #FF6600    #CCFFCC   
 2 Angola                    2007    42.7 1.24e7     4797. #FF6600    #FFCCCC   
 3 Benin                     2007    56.7 8.08e6     1441. #FF6600    #FFCCCC   
 4 Botswana                  2007    50.7 1.64e6    12570. #FF6600    #FFCCCC   
 5 Burkina Faso              2007    52.3 1.43e7     1217. #FF6600    #FFCCCC   
 6 Burundi                   2007    49.6 8.39e6      430. #FF6600    #FFCCCC   
 7 Cameroon                  2007    50.4 1.77e7     2042. #FF6600    #FFCCCC   
 8 Central African Republic  2007    44.7 4.37e6      706. #FF6600    #FFCCCC   
 9 Chad                      2007    50.7 1.02e7     1704. #FF6600    #FFCCCC   
10 Comoros                   2007    65.2 7.11e5      986. #FF6600    #CCFFCC   
# ℹ 132 more rows
# ℹ Use `print(n = ...)` to see more rows

În acest fel, putem extrage unele informații din formatarea condiționată, cum ar fi:

> unique(bad_data$lifeExp_bg)
(1) "#CCFFCC" "#FFCCCC"

Și comparați valorile unice din foile „bune” și „rele”:

> good_data <- read_excel(file, sheet = "good")
> unique(good_data$lifeExpOverContinentAvg)
(1) "Above Continent Average" "Below Continent Average"

Acesta este un exemplu al unor sarcini care consumă trime, deoarece fără foaia „bună”, ar trebui să ghicim acest lucru cu foaia „proastă”:

> library(dplyr)

bad_data %>%
  group_by(country_bg) %>%
  mutate(lifeExpAvg = mean(lifeExp, na.rm = T)) %>%
  mutate(lifeExpOverContinentAvg = case_when(
    lifeExp > lifeExpAvg ~ "Above Continent Average",
    TRUE ~ "Below Continent Average"
  ))

# A tibble: 142 × 9
# Groups:   country_bg (5)
   country        year lifeExp    pop gdpPercap country_bg lifeExp_bg lifeExpAvg
                                        
 1 Algeria        2007    72.3 3.33e7     6223. #FF6600    #CCFFCC          54.8
 2 Angola         2007    42.7 1.24e7     4797. #FF6600    #FFCCCC          54.8
 3 Benin          2007    56.7 8.08e6     1441. #FF6600    #FFCCCC          54.8
 4 Botswana       2007    50.7 1.64e6    12570. #FF6600    #FFCCCC          54.8
 5 Burkina Faso   2007    52.3 1.43e7     1217. #FF6600    #FFCCCC          54.8
 6 Burundi        2007    49.6 8.39e6      430. #FF6600    #FFCCCC          54.8
 7 Cameroon       2007    50.4 1.77e7     2042. #FF6600    #FFCCCC          54.8
 8 Central Afri…  2007    44.7 4.37e6      706. #FF6600    #FFCCCC          54.8
 9 Chad           2007    50.7 1.02e7     1704. #FF6600    #FFCCCC          54.8
10 Comoros        2007    65.2 7.11e5      986. #FF6600    #CCFFCC          54.8
# ℹ 132 more rows
# ℹ 1 more variable: lifeExpOverContinentAvg 

Sper că acest lucru este util!

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.