#225–226

Puzzle-uri
Autor: ExcelBI
Toate fișierele (xlsx cu puzzle și R cu soluție) pentru fiecare puzzle sunt disponibile pe Github-ul meu. Bucurați-vă.
Puzzle #225




Uneori avem tabele frumoase cu așa-numitele date ordonate, unde fiecare observație înseamnă un rând. Dar acest lucru poate determina crearea unor zone vaste de date în foaia de calcul, care sunt greu de găsit și interpretat. De aceea, uneori, trebuie să îndoim datele, să le strângem și așa mai departe pentru a face, poate, o formă nu ordonată, dar lizibilă, precum o hartă pliabilă. În PQ Challenges, de obicei transformăm mesele înainte și înapoi, iar astăzi le stoarcem și le împăturim.
Se încarcă biblioteci și date
library(tidyverse) library(readxl) path = "Power Query/PQ_Challenge_225.xlsx" input = read_excel(path, range = "A1:D9") test = read_excel(path, range = "F1:G12")
Transformare
r1 = input %>%
mutate(Id = consecutive_id(Group),
`Emp ID` = as.character(`Emp ID`),
Group = ifelse(Group == "Group A", "GroupA", Group))
r1_1 = r1 %>% select(Column1 = 1, Column2 = 2, ID = 5)
r1_2 = r1 %>% select(Column1 = 4, Column2 = 3, ID = 5)
r2 = rbind(r1_2, r1_1) %>%
arrange(ID) %>%
distinct() %>%
select(-ID)


Validare
all.equal(r2, test, check.attributes = FALSE) #> (1) TRUE
Puzzle #226




După cum am scris câteva rânduri înainte, uneori avem diagramă cu date care uneori sunt chiar redundante pentru sine. Și trebuie să le presam ca lămâia proaspătă pentru a obține informații valoroase. Verifică-l și pe acesta.
Se încarcă biblioteci și date
library(tidyverse) library(readxl) path = "Power Query/PQ_Challenge_226.xlsx" input = read_excel(path, range = "A1:D13") test = read_excel(path, range = "F1:I19")
Transformare
result = input %>%
fill(`Dept ID`) %>%
select(-`Highest Paid Employee`) %>%
pivot_longer(-`Dept ID`, values_to = "Value") %>%
separate(Value, into = c("Emp Names", "Salary", "Promotion Date"), sep = "-") %>%
select(-name) %>%
filter(!is.na(`Emp Names`)) %>%
arrange(`Dept ID`, `Emp Names`) %>%
mutate(`Promotion Date` = as.POSIXct(`Promotion Date`, format = "%m/%d/%Y", tz = "UTC"),
Salary = as.numeric(Salary)) %>%
select(`Dept ID`, `Emp Names`, `Promotion Date`, Salary)


Validare
all.equal(result, test, check.attributes = FALSE) #> (1) TRUE
Simțiți-vă liber să comentați, să distribuiți și să mă contactați cu sfaturi, întrebări și ideile dvs. despre cum să îmbunătățiți orice. Contactați-mă și pe Linkedin dacă doriți.
![]()
![]()
PowerQuery Puzzle rezolvat cu R a fost publicat inițial în Numbers around us on Medium, unde oamenii continuă conversația subliniind și răspunzând la această poveste.
