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 aktualizować zestaw danych ćwiczeniowych za każdym razem, gdy odświeżasz . Możesz obejrzeć pełny film tego samouczka na dole tego bloga.
Jeśli naprawdę chcesz poprawić swoje umiejętności w zakresie języka DAX, sposobem na to jest użycie go i zastosowanie w praktyce. Aby to zrobić, potrzebujesz praktycznego zestawu danych, który pomoże Ci wizualizować możliwe scenariusze z życia wzięte i pracować nad nimi.
Problem z praktycznymi zestawami danych polega na tym, że są one zazwyczaj statyczne . Aby ćwiczyć efektywnie, musisz sprawiać wrażenie, że dane są żywe.
Spis treści
Konfigurowanie ścieżki pliku dla zestawu danych praktyki
Dla moich przykładowych danych mam plik Excel zawierający dane Sales z lat 2014, 2015 i 2016.
To są dane, które muszę zaktualizować.
Lokalizację dokumentu można znaleźć tutaj na moim pasku narzędzi szybkiego dostępu.
Potrzebuję tego, aby ustawić parametr dla mojej ścieżki do pliku. Więc skopiuję lokalizację tego dokumentu.
Po prawej stronie znajduje się punkt dostępu do paska narzędzi szybkiego dostępu.
Po naciśnięciu tego pojawia się ten ekran.
Pójdę więc do All Commands , a następnie wybiorę Document Location . Dodaj to do paska narzędzi szybkiego dostępu i naciśnij OK.
Teraz przejdę do dodatku Power Query , aby utworzyć parametr, który będzie zawierał ścieżkę do mojego pliku. Ten krok jest ważny, ponieważ umożliwia przywrócenie wszystkich zapytań w modelu, jeśli inny użytkownik zmieni lokalizację pliku.
Stworzę więc nowy parametr .
Nazwę to FileLocation .
W obszarze type zamierzam wybrać Text . A dla Current Value wkleję lokalizację dokumentu, którą skopiowałem wcześniej.
Zamierzam utworzyć nowe zapytanie.
Następnie wybiorę przykładowe dane, których będę używać jako zestawu danych do ćwiczeń.
Tutaj pojawi się wiele różnych tabel, ponieważ mam dane Sales z lat 2014, 2015 i 2016. Muszę tylko wybrać pierwszą, czyli Sales_2014 .
Teraz, gdy wybrałem dane Sales_2014, nadszedł czas, aby zmienić zakodowaną na stałe lokalizację pliku na dynamiczną lokalizację pliku .
Wejdę do Edytora zaawansowanego i zaznaczę wszystko, co jest związane z lokalizacją pliku .
Następnie zmienię to na parametr FileLocation, który utworzyłem wcześniej.
Następnie nacisnę Gotowe, aby zablokować te zmiany w zapytaniu Sales_2014.
Tworzenie folderu przygotowania danych
Patrząc na Zastosowane kroki dla zapytania Sales_2014, kliknę krok Nawigacja . To pokazuje mi, że odwołuje się do kroku Źródło .
Odwołuje się również do Sales_2014 , który jest pokazany jako Table . Pokazuje również, że wyodrębnia dane z kolumny Dane.
Teraz przyjrzę się krokowi Źródło .
Krok Źródło pokazuje mi wszystko, co znajduje się w moim pliku Excel . Jeśli sprawdzę te współrzędne, zobaczę Sales_2014 , a pod Kind jest napisane Table .
Kiedy sprawdzam kolumnę danych, pokazuje wyodrębniony obiekt tabeli .
Mogę więc zduplikować to zapytanie, aby uzyskać dane z 2015 r . Aby to zrobić, wystarczy kliknąć prawym przyciskiem myszy Sales_2014, a następnie wybrać Duplikat.
Następnie przejdę z powrotem do kroku Nawigacja.
Zmienię ten rok z 2014 na 2015.
Zmienię również nazwę tutaj w obszarze Właściwości. Nazwę to Sales_2015.
Tym razem zduplikuję Sales_2015.
Następnie wrócę do kroku Nawigacja i zmienię rok na 2016.
Mam teraz pełne dane dotyczące sprzedaży. Ale te zapytania nie powinny być ładowane do mojego modelu . Muszę tylko kliknąć prawym przyciskiem myszy każdy z nich i odznaczyć Enable load .
Teraz wybiorę wszystkie zapytania i umieszczę je w jednym folderze, aby wszystko było lepiej zorganizowane.
Nazwę ten folder Data Prep .
Uzyskanie przesunięcia dnia
Przykładowe dane w obszarze Przygotowanie danych będą statyczne . Oznacza to, że pierwsza i ostatnia data nigdy się nie zmienią .
Przejdę więc do Sales_2016 i posortuję kolumnę Data zamówienia w kolejności malejącej , aby uzyskać ostatnią datę z tego zestawu danych .
Ostatnia data w tym zbiorze danych to 31 grudnia 2016 r .
Teraz utworzę nowe zapytanie.
Następnie sprawdzę, jakie jest przesunięcie dnia od ostatniej daty w zestawie danych do dnia dzisiejszego. To znaczy, że muszę się dowiedzieć, jaki jest dzisiaj dzień. W tym celu użyję funkcji DateTime.FixedLocalNow . To da mi datę i godzinę z maszyny, nad którą pracuję.
Ale tak naprawdę nie potrzebuję tutaj części poświęconej czasowi. Potrzebuję tylko części daty tej wartości.
Więc zamierzam wyodrębnić datę za pomocą Date.From .
Następnie od tej wartości odejmę ostatnią datę w moim zbiorze danych . Ponieważ dane są statyczne, mogę użyć wewnętrznej wartości daty . To jest #data, a następnie odniesienie do 31 grudnia 2016 r.
Teraz muszę wyodrębnić liczbę z tej różnicy . Dodam więc Number.From i zamknę to nawiasem. Następnie naciśnij enter.
Zmienię nazwę na DayOffset .
Konfigurowanie dynamicznych zakresów dat
I also need dynamic date ranges for my date table. I’ll start off by doing a right click on the Data Prep folder and creating a new Blank Query.
Then, I’ll work on the Start Date of my Date table.
I always want the 1st day of the year as my Start Date. So I’ll put the equal sign and use the function Date.StartOfYear.
Since I need to give that a value, I’m going to offset that by using Date.AddDays.
Then I’ll use the intrinsic date value again and use the 1st date on my data set, which is June 1, 2014.
I also need the number of days that I calculated in my DayOffset, so I’m going to add that.
Once I press enter, it gives me January 1, 2017. This is going to be the 1st date in my date table.
I’ll rename that to fxStartDate.
Now, I can set up my End Date. I’m going to copy this syntax I used on my Start Date.
I’ll create a new blank query.
Then rename it to fxEndDate.
Then I’m going to paste the syntax from my Start Date.
Instead of StartOfYear, I’ll change this to EndOfYear.
I’m also going to use the last date of my data set, which is the 31st of December.
When I press enter, it returns December 31st, 2020.
Creating A Single Sales Table
I’m going to combine the 3 tables into a single Sales table. To do that, I’m going to create a new query.
I’ll call this my Sales table.
Then I’ll combine Sales_2014, Sales_2015 and Sales_2016 into a single table.
I know that you can do that through the ribbon, but there’s also an option to do it directly in the formula bar. I’ll choose that 2nd option.
I’ll start with Table.Combine.
Table.Combine requires a list of tables. So I’ll add a list initializer, which is those curly brackets, then I’m going to name the 3 queries. Press enter after that.
Transforming The Order Date Column
Now that I have most of the elements I need, I’m going to generate a key part of the syntax that I’m going to use later on to complete my dynamic practice dataset.
I’ll start by selecting two number columns. I can use the Delivery Region Index and the Product Description Index. On your end, you can press down either Shift or Ctrl to select both columns.
Under the Transform tab, I’ll select Absolute Value.
If I look at the formula bar, it will show the Table.TransformColumns function. This is the key to the final solution.
The function takes a list of transformation lists. As you can see, there are 2 lists here nested inside each other.
It references the column name as text. That’s why Delivery Region Index was referenced here on the 1st set.
Then it adds a transformation step.
It does the same in a separate list for the Product Description Index column.
Now, I’ll head to the Advanced Editor.
I don’t want absolute values. So the first thing I’m going to do is offset my date. I’ll create a function called fxUpdateDate to do that. It’s going to use the current date, which I’ll type in as cDate.
Następnie ponownie użyję funkcji Date.AddDays , która również używa metody cDate . Użyję również DayOffset, który stworzyłem wcześniej.
Wszystko, co robi fxUpdateDate, to pobiera datę. Więc jeśli przekażę to do funkcji Table.TransformColumns , zacznie sprawdzać każdą zarejestrowaną datę.
Tak więc, jeśli na przykład pracuję nad pierwszym rzędem tutaj, jako datę cDate uznamy 1 czerwca 2014 r.
I za każdym razem, gdy funkcja zostanie wywołana, doda to przesunięcie dnia, które utworzyłem.
Teraz krok Table.Transform pojawia się w polu Obliczona wartość bezwzględna .
Zamierzam najpierw zmienić jego nazwę i nazwać go UpdateOrderDate .
Ten krok UpdateOrderDate obejmuje mój Table.TransformColumns, który jest równy Źródłu.
Pierwsza wymieniona tabela to Indeks regionu dostawy . Ale nie ma potrzeby tego przekształcać. Zamierzam więc zmienić tę pierwszą kolumnę, do której odwołuje się kolumna OrderDate .
Mówi się tutaj również, że transformacja będzie w wartościach bezwzględnych.
Ponieważ tego nie chcę, zmienię to na fxUpdateDate .
Typ też nie będzie wartością bezwzględną, więc muszę też zmienić tę część.
Zamienię to na randkę .
Potrzebuję tylko jednej transformacji, więc usunę drugą listę wraz z krokiem transformacji, który jest dołączony do tego zestawu…
… więc to tylko jedna transformacja dla kolumny OrderDate.
Ponieważ zmieniłem nazwę kroku na Obliczoną wartość bezwzględną, muszę to również zmienić w mojej instrukcji in.
Teraz pokazuje także UpdateOrderDate .
Tak więc kolumna OrderDate będzie teraz wywoływać tę funkcję dla każdego rekordu w Table.TransformColumns .
Patrząc w kolumnę Data zamówienia, widzę, że została ona zaktualizowana.
A jeśli posortuję to w kolejności malejącej, jako bieżącą datę pokaże 7 lipca 2020 r .
Zamierzam więc usunąć ten krok sortowania, ponieważ tak naprawdę go nie potrzebuję. Zrobiłem to tylko po to, aby sprawdzić, czy bieżąca data również została zaktualizowana.
Stosowanie inteligencji czasowej przy użyciu kodu M
Mój model opiera się na danych dotyczących sprzedaży . Ponieważ zamierzam przeprowadzić wywiad czasowy, potrzebowałbym tabeli dat .
Więc przejdę do . W prezentacji kodu M przechodzę do tematu rozszerzonej tabeli dat .
Przewiń do samej góry strony i skopiuj cały kod .
Wracając do mojego modelu, zamierzam utworzyć nowe puste zapytanie i wkleić ten kod M w . Naciśnij Gotowe.
Zmienię nazwę tego zapytania na fxCalendar .
Dla moich parametrów użyję 1 stycznia dla StartDate i 31 stycznia dla EndDate . Następnie naciśnij Wywołaj.
Gdy pojawi się tabela, zmienię jej nazwę na Dates .
Pamiętaj, że już utworzyłem daty rozpoczęcia i zakończenia, patrząc na pierwszą datę w przykładowym zbiorze danych i kompensując ją przez mój DayOffset. Tak więc fxStartDate tutaj pokazuje się jako 1 stycznia 2017 r .
Jeśli chodzi o fxEndDate, zwraca on 31 grudnia 2020 r .
Mogę wrócić do tabeli Daty i tam również zaktualizować ten krok Źródło .
Zawiera listę parametrów w kolejności, w jakiej zostały wywołane. Pierwszy parametr powinien pokazywać datę rozpoczęcia .
Zamierzam to zmienić na fxStartDate .
Zamierzam również zastąpić drugi parametr.
Wstawię fxEndDate .
Po naciśnięciu Enter transformacja jest zakończona. Mam teraz w pełni aktualny zestaw danych dotyczących praktyki, który zawsze pozostanie aktualny.
Po prostu kliknę Zamknij i zastosuj, aby zablokować wszystkie te kroki.
Tworzenie tabeli dynamicznych zapytań dotyczących dat w usłudze LuckyTemplates: samouczek edytora zapytań
Konfigurowanie dynamicznych dat początkowych i końcowych dla tabel dat w dodatku Power Query
Korzystanie z funkcji przesunięcia w rozszerzonych tabelach dat
Wniosek
Jak wspomniałem wcześniej, posiadanie własnego zbioru dynamicznych danych treningowych z pewnością podniesie poziom Twojej gry, jeśli chodzi o LuckyTemplates. Pozwala ćwiczyć swoje umiejętności i wiedzę, udając, że pracujesz nad scenariuszem z prawdziwego życia.
Jeśli chcesz dowiedzieć się więcej o dynamicznym wprowadzaniu dat rozpoczęcia i zakończenia, szczególnie w przypadku używanego zestawu danych do ćwiczeń, możesz zajrzeć na forum LuckyTemplates. Jest tam wiele rozmów na ten temat, jak również na inne istotne tematy. Możesz nawet znaleźć inne podejścia, które będą dla Ciebie skuteczne.
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.