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 :
library("hflights") library("dplyr")
df<-tbl_df(hflights)
Teraz wprowadzimy podstawową składnię select – poniższe zapytanie pobiera z zestawu df kolumny Year, Month, DayOfYear oraz AirTime:
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:
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”:
select(df,starts_with("d"))
analogicznie poniższe zapytanie zwróci wszystkie kolumny kończące się na “e”:
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”
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”):
select(df,contains("ar"))
Dplyr pozwala nam również na nadawanie aliasów – możemy to zrobić poprzez operator przypisania “=”:
select(df,Rok=Year,Miesiac=Month,DzienMiesiaca=DayofMonth)
lub poprzez użycie dedykowanej do tego funkcji rename:
rename(df,Rok=Year)
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!
- Avoiding Issues: Monitoring Query Pushdowns in Databricks Federated Queries - October 27, 2024
- Microsoft Fabric: Using Workspace Identity for Authentication - September 25, 2024
- Executing SQL queries from Azure DevOps using Service Connection credentials - August 28, 2024
Last comments