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 dodać parametr w funkcji M w zapytaniu o tabelę dat . Ten przykład jest oparty na pytaniu zadanym na . Możesz obejrzeć pełny film tego samouczka na dole tego bloga.
Pytanie dotyczyło tego, jak zmienić numerację pierwszego dnia tygodnia z 0 na 1 . Pamiętaj, że nie zmienia to faktycznego początku dnia tygodnia. W tej tabeli dat początkiem tygodnia będzie zawsze poniedziałek. Chodzi tylko o odniesienie się do poniedziałku jako dnia 1 zamiast dnia 0.
Ten proces niekoniecznie jest skomplikowany, ale potrzebujesz podstawowej wiedzy na temat struktury języka M. Jeśli jesteś członkiem LuckyTemplates, możesz zapoznać się z . Wstęp dotyka tematu.
Spis treści
Funkcja M i rozszerzona tabela dat
Zacznę od przejścia do dodatku Power Query . Skopiowałem już tutaj funkcję M tabeli dat .
Dostałem funkcję M z kategorii M Code Showcase na forum LuckyTemplates . Kod znajduje się w temacie .
Jeśli otworzę Edytor zaawansowany , to jest kod.
Jest tam dużo kodu M, co może rozpraszać.
Tworzenie zapytania testowego
Ponieważ w funkcji M dzieje się zbyt wiele, zamiast tego zacznę od nowego pustego zapytania .
Zamierzam nazwać to zapytanie testowe .
Następnie otworzę Edytor zaawansowany .
Ponieważ zamierzam utworzyć funkcję, dodam parę nawiasów i usunę tam cały domyślny kod.
Aby wyłączyć tę funkcję, zadeklaruję opcjonalny parametr .
Następnie dodam zmienną. Nazwę tę zmienną WDStartNum , ponieważ będzie ona oznaczać numer początkowy dnia tygodnia. Muszę również zadeklarować jego typ, więc wpiszę number .
Deklaruję typ, aby zapobiec błędom. Jeśli po prostu zostawię to jako dowolny typ, oznacza to, że może przekazać tabelę lub wartość daty zamiast tylko przekazywać liczby.
Następnym krokiem jest dodanie klauzuli let i klauzuli in .
Pod klauzulą let potrzebuję nazwy zmiennej. Zamierzam więc nazwać tę zmienną WDStart .
Teraz muszę sprawdzić, czy WDStartNum został przekazany. Jeśli się powiedzie, nie będzie równać się null . Zamierzam więc zadeklarować, że jeśli WDStartNum nie jest równe null, chcę, aby została zwrócona wartość .
Jeśli chodzi o klauzulę in, chcę, aby ten sam krok został przekazany. Więc po prostu wstawię tam WDStart , tak jak wcześniej nazwaliśmy naszą zmienną w klauzuli let.
Po naciśnięciu Gotowe funkcja zostanie utworzona. Spróbuję więc przekazać wartość przez tę funkcję.
Spróbuję wpisać literę „a”.
Pamiętaj, że wcześniej zadeklarowałem, że wartość musi być liczbą. Ponieważ rozpoznaje, że wprowadzona przeze mnie wartość nie spełnia tego wymagania, nie pozwoli mi wprowadzić tego parametru.
Więc zamierzam to usunąć i po prostu zostawić puste miejsce.
Po kliknięciu Invoke zwraca wartość 0.
Wracając do mojego pierwotnego zapytania, stwierdza ono, że jeśli wartość nie jest równa null, należy zwrócić wartość WDStartNum. Jeśli jest równy null, powinno zostać zwrócone 0.
Więc to 0 jest poprawne.
Tym razem spróbuję przekazać wartość, zmieniając liczbę w zapytaniu testowym. To prawda, zwraca „1” po naciśnięciu Enter.
A teraz spróbuję zaliczyć rok 2020 w TestQuery. Po naciśnięciu Enter zwraca również 2020.
Najwyraźniej nie chcę, żeby tak się stało. Ponieważ chcę wartości reprezentującej początek tygodnia, chcę, aby wyświetlało się 0 lub 1. Oznacza to, że muszę utworzyć kolejny test, aby sprawdzić, czy wprowadzona liczba to 0 czy 1. W tym celu mogę użyć funkcji List.Contains .
Używanie List.Contains
Utworzyłem puste zapytanie i wpisałem List.Contains bez użycia nawiasów.
Po naciśnięciu Enter widzę dokumentację tej funkcji.
List.Contains wskazuje, czy lista zawiera wartość.
Wymaga więc listy jako pierwszego parametru, a następnie dodaje się wartość. Jeśli ta wartość zostanie znaleziona na liście, zwraca wartość true. W przeciwnym razie zwróci fałsz.
Ponownie otworzę Edytor zaawansowany , aby móc wprowadzić niezbędne zmiany w moim zapytaniu.
Zamiast sprawdzać, czy wartość nie jest równa null, użyję List.Contains .
Teraz podam listę wartości, które należy zastosować do tej funkcji.
Użyję nawiasów klamrowych jako inicjatora listy. Wewnątrz tych nawiasów klamrowych wstawię 0, 1. Po zamknięciu tego nawiasu dodam przecinek.
Dla drugiego parametru użyję WDStartNum. Następnie dodam nawias zamykający.
Mając to na miejscu, oznacza to, że 0 lub 1 powinno dać mi WDStartNumber. Jeśli zostanie umieszczone coś innego niż 0 lub 1, powinienem otrzymać wynik 0.
Pozwól mi to przetestować, umieszczając 2020 w TestQuery. Zgodnie z oczekiwaniami zwraca to „0” (zero).
To dlatego, że wartość 2020 nie znajduje się na liście.
Dodawanie parametru do funkcji M
Teraz, gdy jestem pewien, że kod działa, mogę w końcu umieścić go w rzeczywistej tabeli dat i funkcji M. Otworzę Edytor zaawansowany, a następnie skopiuję logikę .
Następnie przejdę do zapytania o tabelę dat.
Otworzę oryginalną funkcję M za pomocą Edytora zaawansowanego .
Następnie wkleję tam mój kod. Upewnijmy się, że na końcu wiersza znajduje się przecinek.
Następnie zaznaczę i skopiuję nazwę mojego parametru .
Następnie dodam ten parametr tutaj .
Zauważ, że najpierw muszę dodać przecinek na końcu istniejącej linii, a następnie muszę zadeklarować, że ten parametr jest opcjonalny . Następnie mogę umieścić WDStartNum i dodać typ .
Dodałem parametr i osadziłem logikę. Ale muszę też mieć pewność, że uzyskam oczekiwane rezultaty. Więc poszukam wiersza kodu, który obejmuje dzień tygodnia.
Następnie dodam + WDStart .
Kliknę Gotowe , aby zamknąć edytor. Następnie wywołam zapytanie.
Jako datę początkową ustawię 1 stycznia 2020 r., a jako datę końcową użyję 31 grudnia 2020 r.
Użyję „7” jako miesiąca rozpoczęcia roku podatkowego, a następnie wstawię „0” jako WDStartNum.
Klikam na Invoke. Teraz mam tabelę dat.
Zmienię jego nazwę, aby można go było łatwo zidentyfikować.
Teraz sprawdzę wyniki.
To jest moja kolumna DayOfWeek .
Pokazuje, że poniedziałek powrócił jako 0.
Wracając do pytania na Forum, muszę zmienić numer początku tygodnia na 1 zamiast 0. Więc po prostu zmienię to w takcie.
Kiedy naciskam enter, poniedziałek będzie teraz dniem 1 zamiast dnia 0.
Patrząc na zakres liczb, teraz działa on od 1 do 7 zamiast od 0 do 6.
Co się stanie, jeśli przekażę wartość null?
Następnie DayOfWeek dla poniedziałku po prostu wraca do 0.
Używanie funkcji M do tworzenia rozszerzonej tabeli dat usługi LuckyTemplates
Przewodnik dla początkujących po kodzie M w usłudze LuckyTemplates
Konfigurowanie dynamicznych dat rozpoczęcia i zakończenia dla tabel dat usługi Power Query
Wniosek
W ten sposób możesz dodać dodatkowy parametr bezpośrednio do funkcji M w zapytaniu w tabeli dat. Proces nie jest wcale skomplikowany, jak wspomniałem wcześniej. Tak długo, jak masz źródło kodu M, stamtąd jest to dość łatwe.
Ponownie, zawsze możesz sprawdzić kurs Advanced Data Transformations & Modeling w Online, jeśli nie masz wiedzy na temat działania kodów M.
Wszystkiego najlepszego,
Melisa
***** Nauka LuckyTemplates? *****
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.