Pipe In R: Koblingsfunksjoner med Dplyr
I denne opplæringen lærer du hvordan du kobler funksjoner sammen ved å bruke dplyr-røroperatøren i programmeringsspråket R.
Jeg vil gjøre et dypdykk i noe som kalles kombinatorisk analyse. Dette kan defineres som å velge og arrangere elementer av sett i samsvar med foreskrevne regler. Det høres kanskje esoterisk ut, men det har faktisk noen veldig praktiske bruksområder. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.
I denne opplæringen skal jeg vise deg hvordan du gjør dette ved å bruke Power Query i LuckyTemplates.
Innholdsfortegnelse
Eksempel på kombinatorisk analyse
I dette eksempelet på kombinatorisk analyse var oppgaven at vi hadde en liste med seks varehus og vi trengte å generere hvert unike sett med tre. Det høres ut som et ganske enkelt problem, men dette er et av de tilfellene der språket virkelig betyr noe.
Det riktige svaret her er enten 216, 120, 56 eller 20. Så, avhengig av hvordan du definerer det unike settet og reglene du foreskrev, kan du være av med en faktor 10 hvis du ikke får settet riktig.
Og så er det to dimensjoner som betyr noe her. Den første er " betyr rekkefølgen noe ?" Så når vi snakker om tre sett med tre, er ABC tilsvarende BCA? Så betyr rekkefølgen noe? Og hvis rekkefølgen betyr noe , snakker vi om permutasjoner .
Et godt eksempel på permutasjoner der rekkefølge kan ha betydning er (vi snakker om en lagerkontekst) når det gjelder reisetid. Det kan godt hende at hvis du besøker lager A, deretter lager B, og deretter lager C, kan reisetiden på grunn av trafikkflyt med trafikk mot trafikk, tiden du ankom hvert lager, være ganske forskjellig avhengig av ordren der du besøker dem.
Baksiden av det er " rekkefølge spiller ingen rolle ", i så fall snakker vi om kombinasjoner , ikke permutasjoner. Brukssaken her som er vanlig er avstand. For eksempel, i luftlinje vil ikke avstanden fra A til B til C være annerledes enn avstanden fra B til C til A. Disse vil bli vurdert i en kombinasjonssammenheng.
Kombinasjoner anses som duplikater av hverandre. Mens de i en permutasjonssammenheng vil bli ansett som unike.
Og så, som du kan se, burde en kombinasjonslås egentlig være en permutasjonslås, for i så fall betyr rekkefølgen noe, noe som gjør den til en permutasjon, ikke en kombinasjon.
Det andre spørsmålet eller dimensjonen som betyr noe er " når en vare er plukket, kan den plukkes igjen ?" Hvis vi for eksempel velger A som vårt første lager, kan vi velge A igjen, eller må vi velge unike elementer hver gang?
Begrepet vi bruker her er " med erstatning " eller " uten erstatning ". Så hvis en vare kan plukkes igjen, er det med erstatning, noe som betyr at du velger den. Og på en måte går den tilbake i utvalgsboksen og for å bli plukket igjen. Hvis svaret er nei, er det uten erstatning.
Og så kan du se i denne løsningen at permutasjoner med erstatning er de minst restriktive. Så det er den som gir oss 216 unike sett. Og kombinasjoner uten erstatning er den mest restriktive og gir oss 20.
Vi skal bare bruke disse formlene som en måte å sjekke resultatene våre på. Så vi vil huske 216, 120, 56 og 20. La oss nå hoppe inn i Power Query og se hvordan denne kombinatoriske analysen utspiller seg.
Kombinatorisk analyse: Permutasjoner i Power Query
I Power Query har jeg her en veldig enkel sak med seks navngitte varehus.
Og jeg har utviklet denne Power Query M-funksjonen, som jeg har brukt til å behandle kombinasjoner og permutasjoner.
Først skal jeg utvikle den første brukssaken, som er permutasjoner med erstatning , den minst restriktive av gjengen. Måten å gjøre det på i Power Query er å ta denne Warehouses- tabellen og referere til den (i DAX bruker vi CROSSJOIN ).
Jeg vil kalle dette, Per w Rep (permutasjoner med erstatning).
Det er en rekke måter du kan gjøre en krysskobling i Power Query. Den enkleste måten jeg har funnet, er å bare gå til Legg til kolonne og deretter Egendefinert kolonne . I den egendefinerte kolonneformelen refererer du til Varehus- tabellen.
Og det vi finner når vi klikker OK er at det genererer en nestet tabell.
Deretter utvider vi det og fjerner klikker på Bruk originale kolonnenavn som prefiks .
Og vi får denne Location.1 , som er enhver mulig kombinasjon av to. Så det tar de seks første referansene mot de andre seks kombinasjonene. De andre seks gjør det samme hele veien ned til vi har 36 forskjellige sett.
Vi kan gjøre den tredje ved å gjøre dette igjen. Så vi går til Legg til kolonne, deretter en egendefinert kolonne, og deretter Warehouses.
Og vi vil ha de 216 radene som permutasjoner med erstatning.
Og du kan se her nede, 3 kolonner, 216 rader.
Neste brukstilfelle er permutasjoner uten erstatning . Det vi tenker på her er i utgangspunktet alt som har et gjentatt element. Så i denne tabellen skal vi se på fra rad 1 til rad 8.
For å gjøre det, tar vi en titt på denne funksjonen, fxSortAndIsDistinct .
I Advanced Editor kan du se at dette i utgangspunktet ber om en tabell, og deretter utfører den en SortLocs . Men den viktige delen her for "med erstatning" eller "uten erstatning" er at dette er en IsDistinct -funksjon. Det dette gjør er bare å ta en liste over elementer og bestemme sant eller usant, om det er distinkt eller om det har noen duplikater i listen over elementer.
Så vi går hit, velger Perm w Rep , og trykker på Invoke .
Dette vil gi oss disse to nye kolonnene, SortLocs og IsDistinct . Husk at de første åtte postene hadde duplikater og den niende posten var første gang vi så den distinkte . Derfor er den niende raden her den første som vises som sann.
Hvis vi tenker tilbake på tallene vi hadde på faktorberegningene, forventer vi 120 poster hvis vi tar ut de ikke-distinkte postene. Så, la oss prøve å filtrere her og ta ut FALSE.
Når vi gjør det, får vi her nede akkurat de 120 radene vi forventer. La oss nå omdøpe dette til Perm wo Rep (permutasjon uten erstatning).
Kombinatorisk analyse: Kombinasjoner i Power Query
Nå skal vi gjøre kombinasjonene med erstatning . For å gjøre det, gjør vi bare prosessen på nytt og gjentar trinnet (påkalt funksjon). Så det er greit at vi har duplikater, men vi vil ikke ha sett som har de samme elementene , men i en annen rekkefølge.
I dette tilfellet, når vi snakker om kombinasjoner. Hvis du husker at ABC er lik BCA er lik CAB, regnes alle som duplikater av hverandre. Og måten vi bestemmer det på er gjennom Sorter-funksjonen ( fxSortAndIsDistinct ).
Hvis vi går tilbake til funksjonen i Advanced Editor, vil vi se for den andre kolonnen at vi har tatt den listen og sortert den alfabetisk. Deretter hentet vi ut verdiene avgrenset med komma fra den listen. Nå har vi hvert sett sortert alfabetisk. Vi har normalisert rekkefølgen for å gjøre det enkelt å finne duplikater.
Hvis vi nå går tilbake til denne påkalte funksjonen, husk at vi ser etter 56 poster her. Så vi tar denne typen plassering ( SortLocs ) og fjerner duplikatene våre .
Med det får vi 56 rader.
Og så, dette er vårt tredje bruksområde. La oss gi dette nytt navn til CC w Rep (kombinasjoner med erstatning).
La oss avslutte denne ved å ta igjen den permutasjonstabellen med erstatning (Perm w Rep) og gjøre det samme mønsteret (påkalle). Deretter skal vi fjerne duplikatene (SortLocs-kolonnen) fordi dette er en kombinasjon og rekkefølgen spiller ingen rolle. Den er uten erstatning, så vi ønsker også bare den distinkte listen . Så vi klikker av FALSE i IsDistinct-kolonnen.
Med dette får vi 20 poster. Og nå har vi alle fire brukssakene våre.
Konklusjon
Så nå har vi alle fire brukstilfellene våre. Du kan virkelig se hvor kraftig dette er når det gjelder å utvikle den kombinatoriske analysen som gir deg kontroll over erstatning og distinkte elementer.
Dette er til og med aktuelt i noen mer komplekse tilfeller der du har en delvis erstatning, eller kanskje velger et duplikatelement for den første, men ikke den andre gangen. Du kan fortsatt håndtere det pent innenfor.
Jeg håper du fant dette nyttig. Sjekk ut lenkene nedenfor for mer innhold. Du kan også se hele videoen av denne opplæringen nedenfor.
Beste ønsker!
I denne opplæringen lærer du hvordan du kobler funksjoner sammen ved å bruke dplyr-røroperatøren i programmeringsspråket R.
RANKX fra LuckyTemplates lar deg returnere rangeringen til et spesifikt tall i hver tabellrad som utgjør en del av en liste med tall.
Lær hvordan du demonterer en PBIX-fil for å trekke ut LuckyTemplates-temaer og bilder fra bakgrunnen og bruke den til å lage rapporten din!
Excel Formulas Cheat Sheet: Mellomveiledning
LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det
Lær hvordan du installerer programmeringsspråket Python i LuckyTemplates og hvordan du bruker verktøyene til å skrive koder og vise visuelle elementer.
Lær hvordan du beregner dynamiske fortjenestemarginer ved siden av LuckyTemplates og hvordan du kan få mer innsikt ved å grave dypere inn i resultatene.
Lær hvordan du sorterer feltene fra kolonner med utvidet datotabell på riktig måte. Dette er en god strategi å gjøre for vanskelige felt.
I denne artikkelen går jeg gjennom hvordan du kan finne de beste produktene dine per region ved å bruke DAX-beregninger i LuckyTemplates, inkludert TOPN- og CALCUATE-funksjonene.
Lær hvordan du bruker en søppeldimensjon for flagg med lav kardinalitet som du ønsker å inkludere i datamodellen din på en effektiv måte.