I den här handledningen lär du dig
- Välj()
- Filtrera()
- Rörledning
- ordna()
Biblioteket som heter dplyr innehåller värdefulla verb att navigera in i datasetet. Genom den här självstudien kommer du att använda datasetet Resetider. Datauppsättningen samlar information om resan leder av en förare mellan sitt hem och sin arbetsplats. Det finns fjorton variabler i datasetet, inklusive:
- DayOfWeek: Identifiera veckodagen som föraren använder sin bil
- Distans: Resans totala avstånd
- MaxSpeed: Den maximala hastigheten på resan
- Total tid: resans längd i minuter
Datauppsättningen har cirka 200 observationer i datasetet och åkattraktionerna inträffade mellan måndag och fredag.
Först och främst måste du:
- ladda datauppsättningen
- kontrollera datastrukturen.
En praktisk funktion med dplyr är funktionen glimpse (). Detta är en förbättring jämfört med str (). Vi kan använda glimpse () för att se strukturen i datasetet och bestämma vilken manipulation som krävs.
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…
Detta är uppenbart att variabeln Kommentarer behöver diagnostiseras ytterligare. De första observationerna av variabeln Kommentarer saknar endast värden.
sum(df$Comments =)
Kodförklaring
- sum (df $ Comments == ""): Sammanfatta observationerna lika med "" i kolumnkommentarerna från df
Produktion:
## [1] 181
Välj()
Vi börjar med select () verbet. Vi behöver inte nödvändigtvis alla variabler, och en god praxis är att bara välja de variabler som du tycker är relevanta.
Vi har 181 observationer som saknas, nästan 90 procent av datasetet. Om du bestämmer dig för att utesluta dem kommer du inte att kunna fortsätta analysen.
Den andra möjligheten är att släppa variabeln Kommentar med select () verbet.
Vi kan välja variabler på olika sätt med select (). Observera att det första argumentet är datamängden.
- `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 använda det tredje sättet att utesluta variabeln Kommentarer.
step_1_df <- select(df, -Comments)dim(df)
Produktion:
## [1] 205 14
dim(step_1_df)
Produktion:
## [1] 205 13
Den ursprungliga datasetet har 14 funktioner medan step_1_df har 13.
Filtrera()
Filteret () verb hjälper till att hålla observationerna efter ett kriterium. Filtret () fungerar precis som select (), du skickar dataramen först och sedan ett tillstånd åtskilt med ett komma:
filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data
Ett kriterium
Först och främst kan du räkna antalet observationer inom varje nivå för en faktorvariabel.
table(step_1_df$GoingTo)
Kodförklaring
- tabell (): Räkna antalet observationer efter nivå. Observera att endast variabel på faktornivå accepteras
- tabell (step_1_df $ GoingTo): Räkna antalet resor mot den slutliga destinationen.
Produktion:
#### GSK Home## 105 100
Funktionstabellen () indikerar att 105 åkor går till GSK och 100 till hemma.
Vi kan filtrera data för att returnera en dataset med 105 observationer och en annan 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
Flera kriterier
Vi kan filtrera en dataset med mer än ett kriterium. Du kan till exempel extrahera observationerna där destinationen är hemma och inträffade på en onsdag.
select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)
Produktion:
## [1] 23 14
23 observationer matchade detta kriterium.
Rörledning
Skapandet av en dataset kräver många operationer, till exempel:
- importerar
- sammanslagning
- väljer
- filtrering
- och så vidare
Dplyr-biblioteket levereras med en praktisk operatör,%>%, kallad pipeline . Rörledningsfunktionen gör manipuleringen ren, snabb och mindre snabb till fel.
Denna operatör är en kod som utför steg utan att spara mellansteg på hårddisken. Om du är tillbaka till vårt exempel från ovan kan du välja variabler av intresse och filtrera dem. Vi har tre steg:
- Steg 1: Importera data: Importera GPS-data
- Steg 2: Välj data: Välj GoingTo och DayOfWeek
- Steg 3: Filtrera data: Återvänd endast hem och onsdag
Vi kan använda det svåra sättet att göra det:
# 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 är inte ett bekvämt sätt att utföra många operationer, särskilt i en situation med många steg. Miljön slutar med många föremål lagrade.
Låt oss använda rörledningsoperatören%>% istället. Vi behöver bara definiera den dataram som används i början och hela processen kommer att strömma från den.
Grundläggande syntax för 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 skapa ditt första rör enligt stegen ovan.
# 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 är redo att skapa en fantastisk dataset med pipelineoperatören.
ordna()
I föregående handledning lär du dig hur man sorterar värdena med funktionssorteringen (). Biblioteket dplyr har sin sorteringsfunktion. Det fungerar som en charm med rörledningen. Arrangera () verbet kan ordna om en eller flera rader, antingen stigande (standard) eller fallande.
- `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 sortera avståndet 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 NoSammanfattning
I tabellen nedan sammanfattar du alla operationer du lärde dig under självstudien.
Verb Mål Koda Förklaring glimt kontrollera strukturen för en df glimpse(df)Identiskt med str () Välj() Välj / uteslut variablerna select(df, A, B ,C)Välj variablerna A, B och C. select(df, A:C)Välj alla variabler från A till C select(df, -C)Uteslut C filtrera() Filtrera df baserat på ett eller flera villkor filter(df, condition1)Ett villkor filter(df, condition1ondition2) ordna() Sortera datasetet med en eller flera variabler arrange(A)Stigande typ av variabel A arrange(A, B)Stigande typ av variabel A och B arrange(desc(A), B)Fallande typ av variabel A och stigande typ av B %>% Skapa en pipeline mellan varje steg step 1 %>% step 2 %>% step 3