Pipe In R: Anslutningsfunktioner med Dplyr
I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.
I det här blogginlägget ska vi titta närmare på en anpassad funktion för textrensning som jag skapat för vår pågående serie på LuckyTemplates TV som heter . Du kan se hela videon av denna handledning längst ner på den här bloggen.
För vecka #2 har vi en del rörig data som behöver städas upp. Vårt mål här är att rensa alla textvärden i båda kolumnerna.
För den här uppgiften skapade jag en ren textfunktion.
Men först, låt oss ta en snabb titt på M-koden.
Denna funktion tar enkallas myText. Dess värde bör vara av typen text och funktionen bör returnera ett textvärde eftersom inte alla variabler som listas nedan kommer att returnera ett textvärde.
Att deklarera returtypen kommer att resultera i ett fel. För att förhindra att det felet inträffar kan jag kommentera det tills vidare.
Om vi vill se vad den första variabeln returnerar, är allt vi behöver göra att referera till den med namn, efter in-satsen. Så jag ska kopiera ToRemove-variabeln, klistra in den på den nedersta raden och trycka på Okej.
För att se resultatet av den funktionen måste vi anropa den. Så låt oss lägga till en anpassad kolumn till den här frågan.
Anropa sedan vår funktion, välj denna sammanslagna kolumn och tryck på Okej.
Innehållsförteckning
Skapa listor från tom fråga
Vi ser nu att ToRemove-steget skapar en lista. I själva verket är det en kombination av två listor.
Den första listan skapade citattecken och den andra listan är en rad tecken som jag ville ta bort.
Hur skapade jag den här listan?
Tja, jag använde en funktion som heter Txt.ToList.
Du kan komma åt den interna funktionsdokumentationen genom att skapa en tom fråga, ange funktionsnamnet utan parentes och sedan trycka på Enter.
Vi ser att Text.ToList returnerar en lista med teckenvärden från ett givet textvärde.
Låt oss klistra in några texter och anropa den här funktionen.
Det skapar en ny fråga och du kan se att den här listan innehåller alla bokstäver som vi ser här i texten.
Kom ihåg att jag lade till en extra lista, eller hur? Jag kombinerade två listor och använde et-tecken för att göra det.
Låt oss återskapa det nu. Jag använde et-tecken och listinitieraren och skrev sedan in dessa citattecken.
Vi ser nu att citaten har lagts till i den här listan, men varför skapade jag en lista?
Tja, i nästa steg av min textrensningsfunktion använde jag en M-funktion som heter Text. Avlägsna.
Och du ser att du kan skriva in en text och sedan en lista med tecken som du vill ta bort från den strängen.
Låt oss gå tillbaka till vår textrensningsfunktion.
Till. Ta bort skapade dessa två listor och kombinerade dem sedan till en enda lista.
Och låt oss sedan klistra in variabeln CleanText. 'in'-satsen anropar M-funktionen Text.Remove och skickar myText-variabeln och anropar sedan To.Remove-listan. Låt oss se vad det här gör.
Låt oss gå tillbaka till vår fråga. Detta returnerar inte längre en lista, men det returnerar vissa textvärden.
Trimning i Power Query
Nästa steg är trimning . Som du kan se på bilden ovan har vi ytterligare några mellanslag och ett kommatecken i slutet som vi vill bli av med. För att göra detta kan vi använda trimfunktionerna. Låt oss gå tillbaka till frågan för att undersöka M-koden.
I M-koden kapslade jag 2 trimfunktioner. Den första strängfunktionen tar bort de ytterligare utrymmena längst fram och i slutet av vår CleanText-variabel.
För de återstående texterna som vi har tar vi också bort mellanslagen från resultatsträngen.
Vi kommer också att ta bort det avslutande kommatecken.
Låt oss se resultatet. Jag ska kopiera variabelnamnet, klistra in det efter "in"-satsen och klicka på Klar. När vi uppdaterar vår fråga kan du se att de ytterligare blanksteg har försvunnit och det avslutande kommatecken har tagits bort.
I de sista stegen av min fråga bytte jag bara ut några textvärden.
I det sista fallet ersatte jag det understrecket med ett mellanslag. Låt oss kopiera det och klistra in det efter "in"-satsen. Jag aktiverade också returtypen igen.
Låt oss gå tillbaka till vår fråga och undersöka resultaten – än så länge, så bra!
Nu vill vi inte skapa nya kolumner för att anropa vår funktion, eller hur? Det vi kan göra är att omvandla vår kolumn 1 till vår sammanslagningskolumn istället.
Jag ska ta bort det här anpassade kolumnsteget.
Sedan ska jag använda UI för att skapa huvuddelen av koden åt oss. Välj båda kolumnerna på transformeringsfliken, gå till Format och välj en funktion.
Det spelar egentligen ingen roll vilken funktion som väljs eftersom detta är M-koden som genereras av användargränssnittet. Vi kan nu ersätta den texten. Nedre funktion...
… med vår rena textfunktion. Förhoppningsvis förstår du varför jag var tvungen att lägga till fx framför. Det finns ingen "i funktion" som börjar med det.
När vi trycker på OK kan du se att våra texter är rensade. Det här är häftigt.
Slutsats
Varför behövde vi gå igenom alla problem med att skapa en anpassad rengöringsfunktion? Tja, om det är troligt att du kommer att behöva upprepa det här steget eller använda liknande logik i framtiden, kan du lagra denna funktionsfråga.
Genom att göra det kommer det att påskynda frågeutvecklingen i ett senare skede. En annan bra anledning är att det också är roligt att göra.
Jag hoppas att du gillade den här handledningen. Om du gjorde det, glöm inte att prenumerera på LuckyTemplates-kanalen .
Melissa
I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.
RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.
Lär dig hur du tar isär en PBIX-fil för att extrahera LuckyTemplates-teman och bilder från bakgrunden och använda den för att skapa din rapport!
Excel Formler Fuskblad: Mellanvägledning
LuckyTemplates Kalendertabell: Vad är det och hur man använder det
Lär dig hur du installerar programmeringsspråket Python i LuckyTemplates och hur du använder dess verktyg för att skriva koder och visa bilder.
Lär dig hur du beräknar dynamiska vinstmarginaler vid sidan av LuckyTemplates och hur du kan få fler insikter genom att gräva djupare i resultaten.
Lär dig hur du sorterar fälten från en utökad datumtabells kolumner korrekt. Detta är en bra strategi att göra för svåra fält.
I den här artikeln går jag igenom hur du kan hitta dina toppprodukter per region med hjälp av DAX-beräkningar i LuckyTemplates, inklusive TOPN- och CALCULATE-funktionerna.
Lär dig hur du använder en skräpdimension för flaggor med låg kardinalitet som du vill infoga i din datamodell på ett effektivt sätt.