R Velg (), Filter (), Ordne (), Rørledning med eksempel

Innholdsfortegnelse:

Anonim

I denne veiledningen vil du lære

  • å velge()
  • Filter()
  • Rørledning
  • arrangere()

Biblioteket kalt dplyr inneholder verdifulle verb å navigere inne i datasettet. Gjennom denne opplæringen vil du bruke reisetidsdatasettet. Datasettet samler informasjon om reisen som fører fører mellom hjemmet og arbeidsplassen. Det er fjorten variabler i datasettet, inkludert:

  • DayOfWeek: Identifiser ukedagen føreren bruker bilen sin
  • Distanse: Den totale distansen på reisen
  • MaxSpeed: Maksimal hastighet på reisen
  • Total tid: Lengden i minutter av reisen

Datasettet har rundt 200 observasjoner i datasettet, og turene skjedde mellom mandag til fredag.

Først og fremst må du:

  • last inn datasettet
  • sjekk strukturen til dataene.

En hendig funksjon med dplyr er glimt () -funksjonen. Dette er en forbedring i forhold til str (). Vi kan bruke glimt () for å se strukturen til datasettet og bestemme hvilken manipulasjon som kreves.

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

Produksjon:

## 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… 

Dette er åpenbart at variabelen Kommentarer trenger ytterligere diagnostisering. De første observasjonene av Kommentarer-variabelen mangler bare verdier.

sum(df$Comments =)

Kode Forklaring

  • sum (df $ Comments == ""): Sum observasjonene tilsvarer "" i kolonnekommentarer fra df

Produksjon:

## [1] 181 

å velge()

Vi begynner med select () verbet. Vi trenger ikke nødvendigvis alle variablene, og en god praksis er å velge bare variablene du synes er relevante.

Vi har 181 manglende observasjoner, nesten 90 prosent av datasettet. Hvis du bestemmer deg for å ekskludere dem, vil du ikke kunne fortsette analysen.

Den andre muligheten er å slippe variabelen Kommentar med select () verbet.

Vi kan velge variabler på forskjellige måter med select (). Merk at det første argumentet er datasettet.

- `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 bruke den tredje måten å ekskludere Kommentar-variabelen.

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

Produksjon:

## [1] 205 14
dim(step_1_df)

Produksjon:

## [1] 205 13 

Det opprinnelige datasettet har 14 funksjoner mens step_1_df har 13.

Filter()

Filter () verbet hjelper til med å holde observasjonene etter et kriterium. Filteret () fungerer akkurat som select (), du sender datarammen først og deretter en tilstand atskilt med komma:

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

Ett kriterium

Først og fremst kan du telle antall observasjoner innenfor hvert nivå av en faktorvariabel.

table(step_1_df$GoingTo)

Kode Forklaring

  • tabell (): Tell antall observasjoner etter nivå. Merk at bare faktornivåvariabler aksepteres
  • tabell (step_1_df $ GoingTo): Tell antall turer mot den endelige destinasjonen.

Produksjon:

#### GSK Home## 105 100

Funksjonstabellen () indikerer at 105 turer går til GSK og 100 til hjemmet.

Vi kan filtrere dataene for å returnere ett datasett med 105 observasjoner og et annet med 100 observasjoner.

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

Produksjon:

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

Produksjon:

## [1] 105 14 

Flere kriterier

Vi kan filtrere et datasett med mer enn ett kriterium. For eksempel kan du trekke ut observasjonene der destinasjonen er Hjemme og skjedde på en onsdag.

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

Produksjon:

## [1] 23 14 

23 observasjoner samsvarte med dette kriteriet.

Rørledning

Opprettelsen av et datasett krever mange operasjoner, for eksempel:

  • importerer
  • sammenslåing
  • velge
  • filtrering
  • og så videre

Dplyr-biblioteket leveres med en praktisk operatør,%>%, kalt rørledningen . Rørledningsfunksjonen gjør manipulasjonen ren, rask og mindre rask til feil.

Denne operatøren er en kode som utfører trinn uten å lagre mellomtrinn på harddisken. Hvis du er tilbake til eksemplet vårt ovenfra, kan du velge variablene av interesse og filtrere dem. Vi har tre trinn:

  • Trinn 1: Importer data: Importer GPS-dataene
  • Trinn 2: Velg data: Velg GoingTo og DayOfWeek
  • Trinn 3: Filtrer data: Bare returner hjem og onsdag

Vi kan bruke den harde måten å gjø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)

Produksjon:

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

Det er ikke en praktisk måte å utføre mange operasjoner på, spesielt i en situasjon med mange trinn. Miljøet ender opp med mange lagrede gjenstander.

La oss bruke røroperatøren%>% i stedet. Vi trenger bare å definere datarammen som ble brukt i begynnelsen, og hele prosessen vil strømme fra den.

Grunnleggende syntaks for rørledningen

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 lage ditt første rør ved å følge trinnene som er oppført ovenfor.

# 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)

Produksjon:

## [1] TRUE 

Vi er klare til å lage et fantastisk datasett med rørledningsoperatøren.

arrangere()

I forrige opplæring lærer du hvordan du kan sortere verdiene med funksjonen sort (). Biblioteket dplyr har sin sorteringsfunksjon. Det fungerer som en sjarm med rørledningen. Arrangementet () kan ordne en eller flere rader, enten stigende (standard) eller synkende.

- `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 avstanden etter destinasjon.

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

Produksjon:

## 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

Sammendrag

I tabellen nedenfor oppsummerer du alle operasjonene du lærte under opplæringen.

Verb Objektiv Kode Forklaring
glimt sjekk strukturen til en df
glimpse(df)
Identisk med str ()
å velge() Velg / ekskluder variablene
select(df, A, B ,C)
Velg variablene A, B og C
select(df, A:C)
Velg alle variablene fra A til C
select(df, -C)
Ekskluder C
filter() Filtrer df basert på en eller flere forhold
filter(df, condition1)
En tilstand
filter(df, condition1
ondition2)
arrangere() Sorter datasettet med en eller flere variabler
arrange(A)
Stigende slags variabel A
arrange(A, B)
Stigende slags variabel A og B
arrange(desc(A), B)
Fallende slags variabel A og stigende type B
%>% Lag en rørledning mellom hvert trinn
step 1 %>% step 2 %>% step 3