Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr
W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.
Pokażę ci, jak korzystać z funkcji przesunięcia w usłudze LuckyTemplates . Jest to jedno z najbardziej dynamicznych narzędzi, których możesz użyć, zwłaszcza w tabelach dat.
Gdy opanujesz, jak stosować ją w projektach analizy czasowej, możesz uzyskać bardziej dogłębny wgląd, którego nie uzyskasz przy użyciu żadnego innego podejścia. Możesz obejrzeć pełny film tego samouczka na dole tego bloga.
Spis treści
Zrozumienie mechaniki funkcji przesunięcia
Zacznę od pokazania mechaniki funkcji przesunięcia.
Przesunięcia pokazują różnicę między dzisiejszą datą a innymi datami w Twoich danych.
Jak widać w poniższej tabeli dat, skupiłem się na kwartale i roku , aby zobaczyć rzeczywisty ruch danych.
Fioletowy rząd pokazuje bieżący okres . Zauważ, że bieżący okres ma zawsze wartość przesunięcia równą 0 .
Powyżej, na żółto, wszystkie dane pochodzące z przeszłości . Zobaczysz, że liczby tutaj to 0 lub mniej niż 0, reprezentowane przez dane ujemne .
Oznacza to, że dla danych z przyszłości będą one wykazywać wartości dodatnie . W zależności od ziarnistości kolumny może ona również zawierać 0 .
Co sprawia, że offsety są potężne?
Przesunięcia mogą być kolejnymi liczbami reprezentującymi różnicę między różnymi danymi w tabeli . Ale to, co sprawia, że przesunięcia są wspaniałe, to to, że nie mają granic .
Na przykład kwartały będą przebiegać od 1 do 4, reprezentując 4 kwartały w roku. Miesiące trwają od 1 do 12, a tygodnie mogą trwać od 1 do 52 lub 53, w zależności od tego, jaki jest rok. Ale kiedy dotrę do ostatniej liczby, muszę zacząć od nowa.
Nie dotyczy to offsetów. Jeśli chodzi o przesunięcia, zawsze będą one pokazywać względną pozycję względem bieżącej daty i drugiej daty, do której się odwołuje .
Tak więc za każdym razem, gdy tabela dat jest odświeżana, aktualizowana jest również logika, która sprawia, że przesunięcia działają. Oznacza to, że zaktualizowana wartość pojawi się również w tabeli dat.
Przykład kolumny przesunięcia tygodnia
Aby dać ci jaśniejszy obraz działania funkcji przesunięcia, podam przykład jej zastosowania.
W moich przykładowych danych dzisiejsza data to 24 kwietnia 2020 r .
Ponownie zasady przesunięcia stanowią, że bieżący okres jest reprezentowany przez 0, przyszłe dane są reprezentowane przez wartości dodatnie, a przeszłe okresy są reprezentowane przez liczby ujemne .
Na mojej stronie mam również krajalnicę, która zawiera wartość WeekOffset. Obecnie pokazuje wszystkie wartości od -53 do 0, przy czym 0 reprezentuje bieżący tydzień .
24 kwietnia (czyli dzisiaj) przypada na 17 tydzień .
Ta rozszerzona tabela dat obejmuje tylko numery tygodni ISO . Oznacza to, że tygodnie zaczynają się w poniedziałek . Oznacza to również, że tydzień zawsze będzie zawierał 7 dni .
Ale istnieje wiele niestandardowych wymagań tygodniowych, które nie są zgodne z tą samą logiką. Możesz dowiedzieć się więcej o tych przypadkach w różnych tematach poruszanych na forum LuckyTemplates.
Możesz także rozważyć użycie Miesiąca i Roku zamiast Tygodnia i Roku, jeśli lepiej pasuje to do Twojej sytuacji.
Wracając do przykładowych danych, być może zauważyłeś, że wartości WeekOffset mieszczą się w idealnym zakresie numerów sekwencyjnych .
Dzieje się tak, ponieważ mają one tę samą szczegółowość w całym tekście . Nie ma zduplikowanych wartości ani brakujących wartości.
Oczywiście zastosowana tutaj miara Total Sales jest wykonywana w zwykły sposób, ze zwykłą sumą przez sprzedaż dla ilości razy cena . Następnie wszystko jest agregowane, aby uzyskać tygodniową wartość.
Ale co, jeśli chcę zobaczyć tylko ostatnie 4 tygodnie sprzedaży?
Muszę tylko zmienić krajalnicę na zakres od -3 do 0 .
Teraz moja tabela pokazuje tylko ostatnie cztery tygodnie sprzedaży.
Więc kiedy poruszam się w czasie, moja tabela dat jest aktualizowana. To samo dzieje się, gdy nowe wyniki sprzedaży są ładowane do tabeli faktów.
Korzystanie z przesunięć w języku DAX
Tym razem pokażę, jak można wykorzystać funkcję offset w miarach języka DAX.
Mam tabelę z Tygodniem i rokiem oraz Łączną sprzedażą .
Jeśli więc chcę obliczyć sprzedaż z poprzedniego tygodnia bez przesunięć, musiałbym najpierw wyodrębnić numer CurrWeek, a następnie sprawdzić, jaka jest wartość CurrYear .
Jeśli muszę pominąć granicę roku, będę musiał obliczyć, jaki jest Weeknumber dla tego ostatniego roku.
Stamtąd użyłbym SUMX jako funkcji iteracyjnej w tabeli dat. Musiałbym również sprawdzić, czy CurrWeek to tydzień numer 1 .
Jeśli nie jest to tydzień 1, wystarczy odjąć 1 od wartości CurrWeek dla CurrYear . Następnie całkowitą sprzedaż można ostatecznie podsumować .
Patrząc na poniższą tabelę, możesz teraz zobaczyć, że wszystkie wartości są idealnie zagregowane. Wartości wyświetlane w Total Sales są po prostu przenoszone na następny tydzień.
Nawet jeśli przekroczę granicę roku z 2017 na 2018, wzór się nie zepsuje. Całkowita sprzedaż z ostatniego tygodnia 2017 roku jest nadal doskonale obliczona dla tygodnia numer 1 2018 roku.
Tym razem wykonam te same obliczenia, ale z zastosowanymi przesunięciami tabeli dat.
Tak wygląda ta miara, gdy używam przesunięć.
Aby uzyskać wartość PrevWeek , wystarczy odwołać się do wybranego WeekOffset i odjąć 1.
Następnie użyję funkcji dla całkowitej sprzedaży we datach , w których przesunięcie tygodnia jest równe wartości PrevWeek .
Patrząc na wyniki, wyniki wydają się być doskonałe, nawet w okresie przejściowym z 2017 do 2018 roku.
Problem jest jednak w Total . Najwyraźniej nie jest to prawidłowa wartość.
Oto jak to naprawię.
Po pierwsze, zwróć uwagę, że kolumna Tydzień i rok jest ułożona w porządku rosnącym .
Zamierzam to zmienić i zamiast tego posortować kolumnę w porządku malejącym , z 2020 na górze.
Ponieważ nie ma kontekstu pochodzącego z Week & Year , nie identyfikuje wartości przesunięcia bieżącego tygodnia, ale nadal odejmuje 1 . Ale to, co mogę zrobić, to zastosować sumę skumulowaną, aby dostosować sumę .
Tak będzie wyglądać miara:
Początek taktu nie zmienia się. Jest dokładnie taki sam, jak poprzedni środek, który zastosowałem.
Ale ponieważ muszę użyć wzorca podobnego do sum skumulowanych, muszę użyć funkcji OBLICZ w pierwszym tygodniu nad datami z odjęciem 1.
Muszę również zidentyfikować wartość MAX WeekOffset z ALLSELECTED dat i odjąć również jedną od tego.
Następnie ponownie użyję funkcji CALCULATE dla Total Sales . Użyję funkcji , aby uwzględnić WSZYSTKIE daty . Wartość WeekOffset powinna być większa lub równa FirstWeek i mniejsza lub równa LastWeek .
Ponownie, jest to zgodne z podstawowym wzorcem dla sum skumulowanych.
Następnie mogę przystąpić do sprawdzania sumy końcowej za pomocą wzorców .
Więc JEŚLI tydzień i rok ISINSCOPE , oczekuję, że wyniki pokażą LWSales . Ale jeśli tak nie jest, oczekuję, że pojawi się LWTotal .
Tak więc, jeśli wrócę do mojego stołu, pokaże on teraz prawidłową sumę.
Przesunięcia dla określonych tygodni
Pozwólcie, że wrócę do przykładu, którego użyłem wcześniej, w którym przefiltrowałem dane, aby pokazać tylko ostatnie cztery tygodnie.
Jeśli wejdę w miarę, mogę uzyskać te same wyniki, używając przesunięć. Tak by to wyglądało.
Musiałem tylko zidentyfikować bieżącą wartość WeekOffset dla kontekstu pochodzącego z wierszy.
Gdy już to zrobię, mogę zastosować funkcję CALCULATE do wartości Total Sales dla WSZYSTKICH dat , w których wartość WeekOffset jest większa lub równa ThisWeek minus 3 albo mniejsza lub równa wartości ThisWeek .
To zwraca dokładnie taką samą wartość jak przykład, który próbuję replikować.
Skumulowane sumy oparte na średnich miesięcznych wynikach w usłudze LuckyTemplates
Normalizacja danych w usłudze LuckyTemplates dla różnych dni Wyniki
Tworzenie kompleksowej tabeli dat w usłudze LuckyTemplates Naprawdę szybko
Wniosek
Przykłady, które pokazałem powyżej, pokazują, jak naprawdę dynamiczne są przesunięcia. Możesz ich używać w filtrach, plasterkach, a nawet w obliczeniach DAX.
Przesunięć można również używać w rozszerzonych tabelach dat obejmujących tygodnie, miesiące, kwartały, lata i lata obrachunkowe. Dają dużą elastyczność i mogą z łatwością pomóc w uzyskaniu pożądanych rezultatów.
Po prostu kontynuuj zabawę z przesunięciami i zobacz, jakie inne zastosowania możesz dla nich mieć. Możesz także sprawdzić pod kątem innych przypadków, w których funkcja przesunięcia okazała się przydatna.
Wszystkiego najlepszego,
Melisa
W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.
Odkryj różnorodne funkcje zbierania, które można wykorzystać w Power Automate. Zdobądź praktyczne informacje o funkcjach tablicowych i ich zastosowaniu.
Z tego samouczka dowiesz się, jak ocenić wydajność kodów DAX przy użyciu opcji Uruchom test porównawczy w DAX Studio.
Czym jest self w Pythonie: przykłady z życia wzięte
Dowiesz się, jak zapisywać i ładować obiekty z pliku .rds w R. Ten blog będzie również omawiał sposób importowania obiektów z R do LuckyTemplates.
Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.
W tym samouczku omówiono sposób korzystania z techniki wielowątkowych wizualizacji dynamicznych w celu tworzenia szczegółowych informacji na podstawie dynamicznych wizualizacji danych w raportach.
W tym artykule omówię kontekst filtra. Kontekst filtrowania to jeden z głównych tematów, z którym każdy użytkownik usługi LuckyTemplates powinien zapoznać się na początku.
Chcę pokazać, jak usługa online LuckyTemplates Apps może pomóc w zarządzaniu różnymi raportami i spostrzeżeniami generowanymi z różnych źródeł.
Dowiedz się, jak obliczyć zmiany marży zysku przy użyciu technik, takich jak rozgałęzianie miar i łączenie formuł języka DAX w usłudze LuckyTemplates.