#229–230

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




Când cineva lucrează la un proiect mai mult de o lună, nu contează cu adevărat pentru el individual. Dar contabilii nu ar fi fericiți dacă am arunca costurile într-un interval care nu este o lună. Așadar, trebuie să atribuim o sumă fiecărei luni din durata acesteia, respectiv și proporțional. Aflați cum să o faceți.
Se încarcă biblioteci și date
library(tidyverse) library(readxl) path = "Power Query/PQ_Challenge_229.xlsx" input = read_excel(path, range = "A1:D6") test = read_excel(path, range = "F1:H16")
Transformare
result = input %>%
mutate(days = as.numeric(as.Date(`To Date`) - as.Date(`From Date`)) + 1,
daily = Amount / days) %>%
rowwise() %>%
mutate(date = list(seq(`From Date`, `To Date`, by = "day"))) %>%
unnest(date) %>%
mutate(`Month - Year` = paste0(str_pad(month(date), width = 2, "0", side = "left"), "-", str_sub(year(date), 3, 4))) %>%
summarise(Amount = round(sum(daily),0), .by = c(Transaction, `Month - Year`))


Validare
Ssall.equal(result, test, check.attributes = FALSE) # (1) TRUE
Puzzle #230




Avem un rezumat al sumelor vânzărilor din întreaga lume, dar arată ca un grafic calendaristic cu pătrat pentru fiecare lună. Trebuie să o rezumam „modul matematic”. Așadar, mai întâi ordonați acest tabel, apoi stivuiți luni într-o structură pe două coloane, ordonați din nou și, în sfârșit, rezumați-le pe toate împreună în luni. Puțină mizerie, știu, dar este o treabă foarte rapidă.
Se încarcă biblioteci și date
library(tidylibrary(tidyverse) library(readxl) path = "Power Query/PQ_Challenge_229.xlsx" input = read_excel(path, range = "A1:D6") test = read_excel(path, range = "F1:H16")
Transformare
result = input %>%
mutate(days = as.numeric(as.Date(`To Date`) - as.Date(`From Date`)) + 1,
daily = Amount / days) %>%
rowwise() %>%
mutate(date = list(seq(`From Date`, `To Date`, by = "day"))) %>%cscscsssssssssssssssssssssssssssssSCsc
unnest(date) %>%
mutate(`Month - Year` = paste0(str_pad(month(date), width = 2, "0", side = "left"), "-", str_sub(year(date), 3, 4))) %>%
summarise(Amount = round(sum(daily),0), .by = c(Transaction, `Month - Year`))


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.
