dplyr – filtracja i sortowanie rezultatu

Filtrowanie danych w R może odbywać się na wiele różnych sposobów. W ramach dzisiejszego krótkiego artykułu przedstawię jak to zrobić wykorzystując pakiet dplyr. Zaczynajmy!

Pierwsze kroki zapewne już znacie – musimy załadować interesujące nas pakiety i stworzyć zmienną typu tbl_df.

library("dplyr")
library("hflights")
df<-hflights

Mając już do dyspozycji interesujące nas funkcje przyjrzyjmy się pierwszej z nich czyli filter.
Składnia tego polecenia jest bardzo prosta i wpisuje się w trend łatwości użycia przedstawiony wraz z funkcją select – spójrzmy na poniższy przykład:

filter(df,TailNum=="N492AA")

Results

Jako pierwszy argument przedstawiamy zestaw danych na którym chcemy polegać, następnie po przecinku podajemy warunki filtracji – proste prawda? Oczywiście filtracja nie zawsze jest taka prosta jak powyżej – czasem musimy użyć operatorów logicznych.

Dla przykładu wyświetlmy sobie dane lotów samolotu o numerze N492AA w styczniu.

filter(df,TailNum=="N492AA" & Month==1)

Results

filter(df,TailNum=="N492AA" | TailNum=="N504AA")

Results

Identyczny rezultat otrzymamy używając wyrażenia kluczowego %in% będące bardziej kompaktowym rozwiązaniem niż wielokrotne powtarzanie operatora “|”:

filter(df,TailNum %in% c("N492AA",TailNum=="N504AA"))

Istnieje również dodatkowe polecenie filtrujące o nazwie slice – pozawala ono na pobieranie konkretnych wierszy zestawu – składnia jest bardzo prosta i nie wymaga dodatkowych wyjaśnień. Spójrzcie na poniższe:

slice(df,100:101)

Results

Jak widać – pobieranie danych nigdy nie było tak szybkie i proste! A co jeżeli chcemy określony rezultat uporządkować? Osiągniemy to w równie prosty sposób używając słowa kluczowego arrange wraz ze wskazaniem kerunku porządkowania asc lub desc:

arrange(filter(df,TailNum %in% c("N492AA",TailNum=="N504AA")),desc(DepTime))

Results

Jak widać posługiwanie dplyr daje duże możliwości i tak jak już wspominałem w poprzednich artykułach upraszcza wiele spraw – również agregowanie wartości o czym napiszę w następnym artykule. Zapraszam!

Leave a Reply