W ostatnim artykule przejrzeliśmy możliwości pakietu pakietu dplyr rozszerzającego możliwości języka R jeśli chodzi o szybkie rozpoznanie danych. Dziś chciałbym zaprezentować jedną z fundamentalnych funkcji wchodzących w skład tego pakietu – chodzi mianowicie o funkcję select. Entuzjaści języka TSQL mogą czuć się jak w domu ponieważ funkcja ta ma podobne znaczenie jak przy manipulacji danymi bazodanowymi. Tak więc zaczynajmy!
Pierwszym krokiem jest oczywiście załadowanie dwóch pakietów: dplyr oraz hflights oraz przypiszmy hflights do obiektu typu tbl_df o nazwie df :
1 2 |
library("hflights") library("dplyr") |
1 |
df<-tbl_df(hflights) |
Teraz wprowadzimy podstawową składnię select – poniższe zapytanie pobiera z zestawu df kolumny Year, Month, DayOfYear oraz AirTime:
1 |
select(df,Year,Month,DayofMonth,AirTime) |
Pierwszym argumentem jest zestaw danych, a następnie po przecinku lista kolumn, które chcemy wyświetlić. Proste prawda? Szczególnie, że w bazowej implementacji R nie jest to aż tak proste. A to dopiero początek!
Oczywiście możemy układać kolumny w określonej kolejności. Aby osiągnąć ten efekt można jawnie wskazać wszystkie kolumny w pożądanej przez nas kolejności, albo przedstawić na początek lub koniec daną kolumnę i po nich/przed nimi wyświetlić wszystkie pozostałe. Aby coś takiego osiągnąć możemy użyć funkcji everything() zwracającej wszystkie kolumny zestawu:
1 |
select(df,Month,Dest,everything()) |
Składnia select pozwala nam wybierać kolumny, które zaczynają albo kończą się na określoną frazę – służą ku temu argumenty starts_with i ends_with np. poniższe zapytanie zwraca wszystkie kolumny zaczynające się na “d”:
1 |
select(df,starts_with("d")) |
analogicznie poniższe zapytanie zwróci wszystkie kolumny kończące się na “e”:
1 |
select(df,ends_with("e")) |
Operacje te są bardzo proste – wyobraźcie sobie podobne operacje np. w języku SQL 🙂
Co jednak gdy chcemy użyć bardziej skomplikowanego wzorca? Oczywiście możemy to zrobić używając np. funkcji matches i wyrażeń regularnych np. poniższe zapytanie zwróci wszystkie kolumny kończące się na “h” lub “r”
1 |
select(df,matches("[hr]$")) |
Bardzo podobną funkcjonalność oferuje argument contains – wyszukuje on jednak kolumny nie według wyrażenia regularnego lecz według tego czy kolumna zawiera
w nazwie dany ciąg znaków (w tym przypadku “ar”):
1 |
select(df,contains("ar")) |
Dplyr pozwala nam również na nadawanie aliasów – możemy to zrobić poprzez operator przypisania “=”:
1 |
select(df,Rok=Year,Miesiac=Month,DzienMiesiaca=DayofMonth) |
lub poprzez użycie dedykowanej do tego funkcji rename:
1 |
rename(df,Rok=Year) |
1 |
rename(df,Rok=Year) |
Jak zapewne zauważyliście jest różnica pomiędzy nadawaniem aliasów w select i rename. Gdy użyjemy select to w rezultacie otrzymamy tylko te kolumny, które zostaną jawnie wskazane, rename z kolei wyświetla wszystkie kolumny z zestawu danych zmienia – wskazanie kolumny służy tylko i wyłącznie nadaniu jej nowego aliasu.
Już jutro powiemy sobie jak przefiltrować dane według określonych warunków – zapraszam!
- Azure Data Factory – Lookup i Foreach - January 17, 2021
- Nagrania naszych sesji z SQLDay 2019! - December 29, 2020
- SQLDay 2020! - November 28, 2020
Ostatnie komentarze