Puzzle PowerQuery rezolvat cu R

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

#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.

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.