I denne vejledning lærer du
- Vælg()
- Filter()
- Rørledning
- arrangere ()
Biblioteket kaldet dplyr indeholder værdifulde verb til at navigere inde i datasættet. Gennem denne vejledning bruger du datasættet Rejsetider. Datasættet indsamler oplysninger om turens fører fra en bilist mellem sit hjem og hans arbejdsplads. Der er fjorten variabler i datasættet, herunder:
- DayOfWeek: Identificer ugedagen, hvor chaufføren bruger sin bil
- Distance: Den samlede distance på rejsen
- MaxSpeed: Den maksimale hastighed på rejsen
- Total tid: længden i minutter af rejsen
Datasættet har omkring 200 observationer i datasættet, og forlystelserne fandt sted mellem mandag til fredag.
Først og fremmest skal du:
- indlæse datasættet
- kontrollere datastrukturen.
En praktisk funktion med dplyr er funktionen glimpse (). Dette er en forbedring i forhold til str (). Vi kan bruge glimpse () til at se datasættets struktur og beslutte, hvilken manipulation der kræves.
library(dplyr)PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"df <- read.csv(PATH)glimpse(df)
Produktion:
## Observations: 205## Variables: 14## $ X1, 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…
Dette er indlysende, at variablen Kommentarer skal diagnosticeres yderligere. De første observationer af variablen Kommentarer mangler kun værdier.
sum(df$Comments =)
Kode Forklaring
- sum (df $ Comments == ""): Sum observationer svarer til "" i kolonnekommentarer fra df
Produktion:
## [1] 181
Vælg()
Vi begynder med select () verbet. Vi har ikke nødvendigvis brug for alle variablerne, og en god praksis er kun at vælge de variabler, du finder relevante.
Vi har 181 manglende observationer, næsten 90 procent af datasættet. Hvis du beslutter at ekskludere dem, kan du ikke fortsætte analysen.
Den anden mulighed er at droppe variablen Kommentar med verbet select ().
Vi kan vælge variabler på forskellige måder med select (). Bemærk, at det første argument er datasættet.
- `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.
Du kan bruge den tredje måde at udelukke variablen Kommentarer på.
step_1_df <- select(df, -Comments)dim(df)
Produktion:
## [1] 205 14
dim(step_1_df)
Produktion:
## [1] 205 13
Det originale datasæt har 14 funktioner, mens step_1_df har 13.
Filter()
Filteret () verb hjælper med at holde observationer efter et kriterium. Filteret () fungerer nøjagtigt som select (), du sender først datarammen og derefter en betingelse adskilt med et komma:
filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data
Et kriterium
Først og fremmest kan du tælle antallet af observationer inden for hvert niveau af en faktorvariabel.
table(step_1_df$GoingTo)
Kode Forklaring
- tabel (): Tæl antallet af observationer efter niveau. Bemærk, at kun faktorniveauvariabler accepteres
- tabel (step_1_df $ GoingTo): Tæl antallet af ture mod den endelige destination.
Produktion:
#### GSK Home## 105 100
Funktionstabellen () angiver, at 105 forlystelser går til GSK og 100 til hjemmet.
Vi kan filtrere dataene for at returnere et datasæt med 105 observationer og et andet med 100 observationer.
# Select observationsif GoingTo == Homeselect_home <- filter(df, GoingTo == "Home")dim(select_home)
Produktion:
## [1] 100 14
# Select observationsif GoingTo == Workselect_work <- filter(df, GoingTo == "GSK")dim(select_work)
Produktion:
## [1] 105 14
Flere kriterier
Vi kan filtrere et datasæt med mere end et kriterium. For eksempel kan du udtrække observationer, hvor destinationen er hjemme og fandt sted på en onsdag.
select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)
Produktion:
## [1] 23 14
23 observationer matchede dette kriterium.
Rørledning
Oprettelse af et datasæt kræver mange operationer, såsom:
- importerer
- fusionere
- vælge
- filtrering
- og så videre
Dplyr-biblioteket leveres med en praktisk operatør,%>%, kaldet pipeline . Rørledningsfunktionen gør manipulationen ren, hurtig og mindre hurtig til fejl.
Denne operatør er en kode, der udfører trin uden at gemme mellemliggende trin på harddisken. Hvis du er tilbage til vores eksempel ovenfra, kan du vælge de relevante variabler og filtrere dem. Vi har tre trin:
- Trin 1: Importer data: Importer GPS-data
- Trin 2: Vælg data: Vælg GoingTo og DayOfWeek
- Trin 3: Filtrer data: Vend kun hjem og onsdag
Vi kan bruge den hårde måde at gøre det på:
# 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)
Produktion:
## GoingTo DayOfWeek## 1 Home Wednesday## 2 Home Wednesday## 3 Home Wednesday## 4 Home Wednesday## 5 Home Wednesday## 6 Home Wednesday
Det er ikke en bekvem måde at udføre mange operationer på, især i en situation med mange trin. Miljøet ender med mange lagrede genstande.
Lad os bruge rørledningsoperatøren%>% i stedet. Vi behøver kun at definere den dataramme, der blev brugt i starten, og hele processen vil strømme fra den.
Grundlæggende syntaks for pipeline
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.
Du kan oprette dit første rør ved at følge ovenstående trin.
# 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)
Produktion:
## [1] TRUE
Vi er klar til at oprette et fantastisk datasæt med pipelineoperatøren.
arrangere ()
I den foregående tutorial lærer du, hvordan du sorterer værdierne med funktionssorteringen (). Biblioteket dplyr har sin sorteringsfunktion. Det fungerer som en charme med rørledningen. Arrangementet () verb kan ordne en eller flere rækker, enten stigende (standard) eller faldende.
- `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
Vi kan sortere afstanden efter destination.
# Sort by destination and distancestep_2_df <-step_1_df %>%arrange(GoingTo, Distance)headProduktion:
## 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 NoResumé
I tabellen nedenfor opsummerer du alle de operationer, du har lært under vejledningen.
Udsagnsord Objektiv Kode Forklaring glimt kontrollere strukturen af en df glimpse(df)Identisk med str () Vælg() Vælg / ekskluder variablerne select(df, A, B ,C)Vælg variablerne A, B og C. select(df, A:C)Vælg alle variabler fra A til C select(df, -C)Ekskluder C filter() Filtrer df baseret på en eller flere betingelser filter(df, condition1)Én betingelse filter(df, condition1ondition2) arrangere () Sorter datasættet med en eller flere variabler arrange(A)Stigende slags variabel A arrange(A, B)Stigende slags variabel A og B arrange(desc(A), B)Faldende slags variabel A og stigende slags B %>% Opret en rørledning mellem hvert trin step 1 %>% step 2 %>% step 3