#231–232
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 #231
Ambele puzzle-uri din acest weekend sunt legate cumva de logistică. În primul, trebuie să completăm datele pentru factură pentru fiecare persoană care plasează comanda. Avem o problemă clasică de transformare și îmbinare. O parte dificilă este să adăugați totaluri pentru rânduri și coloane. Hai să o facem.
Se încarcă biblioteci și date
library(tidyverse) library(readxl) library(janitor) path = "Power Query/PQ_Challenge_231.xlsx" input1 = read_excel(path, range = "A2:C5") input2 = read_excel(path, range = "A8:B15") test = read_excel(path, range = "E2:J6")
Transformare
input = input1 %>% separate_rows(c(Items, Quantity), sep = ", ") %>% left_join(input2, by = "Items") %>% mutate(Amount = as.numeric(Quantity) * Price) %>% select(-c(Price, Quantity)) %>% pivot_wider(names_from = "Items", values_from = "Amount", values_fn = list(Amount = sum), values_fill = 0) %>% select(Name = Person,u, x, y, z) %>% arrange(Name) %>% adorn_totals(c("row", "col"))
Validare
all.equal(input, test, check.attributes = FALSE) #> (1) TRUE
Puzzle #232
De data aceasta avem niveluri de stoc pentru fiecare magazin. Dar nu toate zilele sunt înregistrate. Deci, trebuie să facem intervale complete de date și cantitate cumulativă pentru fiecare magazin. Nu este greu și o putem face din nou folosind doar un canal de cod. Află.
Se încarcă biblioteci și date
library(tidyverse) library(readxl) path = "Power Query/PQ_Challenge_232.xlsx" input = read_excel(path, range = "A1:C7") test = read_excel(path, range = "E1:G13")
Transformare
result = input %>% group_by(Store) %>% complete(Date = seq(min(Date), max(Date), by = "day")) %>% ungroup() %>% mutate(has_val = cumsum(!is.na(Quantity))) %>% fill(Quantity) %>% mutate(Quantity = cumsum(Quantity), .by = c(Store, has_val)) %>% select(-has_val)
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.