R Vyberte (), Filter (), Usporiadať (), Potrubie s príkladom

Obsah:

Anonim

V tomto návode sa naučíte

  • vyberte ()
  • Filter ()
  • Potrubie
  • zariadiť ()

Knižnica s názvom dplyr obsahuje hodnotné slovesá na navigáciu vo vnútri množiny údajov. Prostredníctvom tohto tutoriálu budete používať množinu údajov Cestovné časy. Dátový súbor zhromažďuje informácie o trasách vedených vodičom medzi domovom a jeho pracoviskom. V datasete je štrnásť premenných, vrátane:

  • DayOfWeek: Identifikujte deň v týždni, kedy vodič používa svoje auto
  • Vzdialenosť: Celková vzdialenosť cesty
  • MaxSpeed: Maximálna rýchlosť jazdy
  • TotalTime: Dĺžka cesty v minútach

Súbor údajov má v súbore asi 200 pozorovaní a jazdy sa uskutočnili od pondelka do piatku.

Najskôr musíte:

  • načítať dataset
  • skontrolovať štruktúru údajov.

Jednou z užitočných funkcií s dplyr je funkcia glimpse (). Toto je vylepšenie oproti str (). Pomocou nástroja glimpse () môžeme vidieť štruktúru množiny údajov a rozhodnúť sa, aká manipulácia je potrebná.

library(dplyr)PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"df <- read.csv(PATH)glimpse(df)

Výkon:

## Observations: 205## Variables: 14## $ X  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,… ## $ Date  1/6/2012, 1/6/2012, 1/4/2012, 1/4/2012, 1/3/20… ## $ StartTime  16:37, 08:20, 16:17, 07:53, 18:57, 07:57, 17:3… ## $ DayOfWeek  Friday, Friday, Wednesday, Wednesday, Tuesday,… ## $ GoingTo  Home, GSK, Home, GSK, Home, GSK, Home, GSK, GS… ## $ Distance  51.29, 51.63, 51.27, 49.17, 51.15, 51.80, 51.37… ## $ MaxSpeed  127.4, 130.3, 127.4, 132.3, 136.2, 135.8, 123.2… ## $ AvgSpeed  78.3, 81.8, 82.0, 74.2, 83.4, 84.5, 82.9, 77.5,… ## $ AvgMovingSpeed  84.8, 88.9, 85.8, 82.9, 88.1, 88.8, 87.3, 85.9,… ## $ FuelEconomy  , , , , , , -, -, 8.89, 8.89, 8.89, 8.89, 8.89… ## $ TotalTime  39.3, 37.9, 37.5, 39.8, 36.8, 36.8, 37.2, 37.9,… ## $ MovingTime  36.3, 34.9, 35.9, 35.6, 34.8, 35.0, 35.3, 34.3,… ## $ Take407All  No, No, No, No, No, No, No, No, No, No, No, No… ## $ Comments  , , , , , , , , , , , , , , , Put snow tires o… 

Je zrejmé, že premenná Komentáre vyžaduje ďalšiu diagnostiku. Prvým pozorovaním premennej Poznámky sú iba chýbajúce hodnoty.

sum(df$Comments =)

Vysvetlenie kódu

  • sum (df $ Comments == ""): Sčítajte pozorovania rovnajúce sa "" v stĺpci komentáre z df

Výkon:

## [1] 181 

vyberte ()

Začneme slovesom select (). Nepotrebujeme nevyhnutne všetky premenné a osvedčeným postupom je vyberať iba tie premenné, ktoré považujete za relevantné.

Máme 181 chýbajúcich pozorovaní, čo je takmer 90 percent súboru údajov. Ak sa ich rozhodnete vylúčiť, nebudete môcť pokračovať v analýze.

Druhou možnosťou je vypustiť premennú Komentár pomocou slovesa select ().

Pomocou select () môžeme vyberať premenné rôznymi spôsobmi. Všimnite si, že prvým argumentom je množina údajov.

- `select(df, A, B ,C)`: Select the variables A, B and C from df dataset.- `select(df, A:C)`: Select all variables from A to C from df dataset.- `select(df, -C)`: Exclude C from the dataset from df dataset.

Tretím spôsobom môžete vylúčiť premennú Poznámky.

step_1_df <- select(df, -Comments)dim(df)

Výkon:

## [1] 205 14
dim(step_1_df)

Výkon:

## [1] 205 13 

Pôvodný súbor údajov má 14 funkcií, zatiaľ čo krok_1_df má 13 funkcií.

Filter ()

Sloveso filter () pomáha udržiavať pozorovania podľa kritérií. Filter () funguje presne ako select (), najskôr odovzdáte dátový rámec a potom podmienku oddelenú čiarkou:

filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data

Jedno kritérium

Najskôr môžete spočítať počet pozorovaní v rámci každej úrovne premennej faktora.

table(step_1_df$GoingTo)

Vysvetlenie kódu

  • tabuľka (): Spočítajte počet pozorovaní podľa úrovne. Upozorňujeme, že akceptovaná je iba premenná na úrovni faktora
  • tabuľka (step_1_df $ GoingTo): Spočítajte počet ciest do konečného cieľa.

Výkon:

#### GSK Home## 105 100

Tabuľka funkcií () naznačuje, že 105 jázd bude smerovať do GSK a 100 na cestu domov.

Dáta môžeme filtrovať, aby sme vrátili jeden súbor údajov so 105 pozorovaniami a ďalší so 100 pozorovaniami.

# Select observationsif GoingTo == Homeselect_home <- filter(df, GoingTo == "Home")dim(select_home)

Výkon:

## [1] 100 14
# Select observationsif GoingTo == Workselect_work <- filter(df, GoingTo == "GSK")dim(select_work)

Výkon:

## [1] 105 14 

Viaceré kritériá

Môžeme filtrovať množinu údajov s viac ako jedným kritériom. Môžete napríklad extrahovať pozorovania, ktorých cieľovým bodom je Domov a vyskytli sa v stredu.

select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)

Výkon:

## [1] 23 14 

Tomuto kritériu zodpovedalo 23 pozorovaní.

Potrubie

Vytvorenie množiny údajov si vyžaduje veľa operácií, ako napríklad:

  • dovážať
  • splynutie
  • výber
  • filtrovanie
  • a tak ďalej

Knižnica dplyr prichádza s praktickým operátorom%>%, ktorý sa nazýva pipeline . Vďaka funkcii potrubia je manipulácia čistá, rýchla a menej rýchla na chyby.

Tento operátor je kód, ktorý vykonáva kroky bez ukladania medzikrokov na pevný disk. Ak sa vrátite k nášmu príkladu zhora, môžete vybrať zaujímavé premenné a filtrovať ich. Máme tri kroky:

  • Krok 1: Import údajov: Importujte údaje GPS
  • Krok 2: Vyberte údaje: Vyberte možnosti GoingTo a DayOfWeek
  • Krok 3: Filtrovanie údajov: Vráťte sa iba domov a stredu

Môžeme to urobiť zložito:

# Step 1step_1 <- read.csv(PATH)# Step 2step_2 <- select(step_1, GoingTo, DayOfWeek)# Step 3step_3 <- filter(step_2, GoingTo == "Home", DayOfWeek == "Wednesday")head(step_3)

Výkon:

## GoingTo DayOfWeek## 1 Home Wednesday## 2 Home Wednesday## 3 Home Wednesday## 4 Home Wednesday## 5 Home Wednesday## 6 Home Wednesday

To nie je pohodlný spôsob vykonávania mnohých operácií, najmä v situáciách s mnohými krokmi. Prostredie končí s množstvom uložených predmetov.

Použijme namiesto toho operátora potrubia%>%. Musíme len definovať dátový rámec použitý na začiatku a z neho bude plynúť celý proces.

Základná syntax potrubia

New_df <- df %>%step 1 %>%step 2 %>%… arguments- New_df: Name of the new data frame- df: Data frame used to compute the step- step: Instruction for each step- Note: The last instruction does not need the pipe operator `%`, you don't have instructions to pipe anymoreNote: Create a new variable is optional. If not included, the output will be displayed in the console.

Svoju prvú fajku môžete vytvoriť podľa krokov uvedených vyššie.

# Create the data frame filter_home_wed.It will be the object return at the end of the pipelinefilter_home_wed <-#Step 1read.csv(PATH) % > %#Step 2select(GoingTo, DayOfWeek) % > %#Step 3filter(GoingTo == "Home",DayOfWeek == "Wednesday")identical(step_3, filter_home_wed)

Výkon:

## [1] TRUE 

Sme pripravení vytvoriť ohromujúci súbor údajov s prevádzkovateľom plynovodu.

zariadiť ()

V predchádzajúcom tutoriáli sa dozviete, ako zoradiť hodnoty pomocou funkcie sort (). Knižnica dplyr má svoju triediacu funkciu. Funguje to ako kúzlo s potrubím. Sloveso usporiadať () môže zmeniť poradie jedného alebo viacerých riadkov, a to vzostupne (predvolené) alebo zostupne.

- `arrange(A)`: Ascending sort of variable A- `arrange(A, B)`: Ascending sort of variable A and B- `arrange(desc(A), B)`: Descending sort of variable A and ascending sort of B 

Vzdialenosť môžeme triediť podľa cieľa.

# Sort by destination and distancestep_2_df <-step_1_df %>%arrange(GoingTo, Distance)head

Výkon:

## X Date StartTime DayOfWeek GoingTo Distance MaxSpeed AvgSpeed## 1 193 7/25/2011 08:06 Monday GSK 48.32 121.2 63.4## 2 196 7/21/2011 07:59 Thursday GSK 48.35 129.3 81.5## 3 198 7/20/2011 08:24 Wednesday GSK 48.50 125.8 75.7## 4 189 7/27/2011 08:15 Wednesday GSK 48.82 124.5 70.4## 5 95 10/11/2011 08:25 Tuesday GSK 48.94 130.8 85.7## 6 171 8/10/2011 08:13 Wednesday GSK 48.98 124.8 72.8## AvgMovingSpeed FuelEconomy TotalTime MovingTime Take407All## 1 78.4 8.45 45.7 37.0 No## 2 89.0 8.28 35.6 32.6 Yes## 3 87.3 7.89 38.5 33.3 Yes## 4 77.8 8.45 41.6 37.6 No## 5 93.2 7.81 34.3 31.5 Yes## 6 78.8 8.54 40.4 37.3 No

Zhrnutie

V tabuľke nižšie sumarizujete všetky operácie, ktoré ste sa naučili počas tutoriálu.

Sloveso Cieľ Zákonníka Vysvetlenie
záblesk skontrolovať štruktúru df
glimpse(df)
Zhodné s str ()
vyberte () Vyberte / vylúčte premenné
select(df, A, B ,C)
Vyberte premenné A, B a C
select(df, A:C)
Vyberte všetky premenné od A do C.
select(df, -C)
Vylúčiť C
filter () Filtrujte df na základe jednej alebo viacerých podmienok
filter(df, condition1)
Jedna podmienka
filter(df, condition1
ďalšie2)
zariadiť () Zoraďte množinu údajov s jednou alebo viacerými premennými
arrange(A)
Vzostupný druh premennej A
arrange(A, B)
Vzostupne druh premennej A a B.
arrange(desc(A), B)
Zostupný druh premennej A a vzostupný druh B
%>% Medzi každým krokom vytvorte kanál
step 1 %>% step 2 %>% step 3