(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!
