R Selecteer (), Filter (), Schik (), Pijplijn met voorbeeld

Inhoudsopgave:

Anonim

In deze tutorial leer je

  • selecteer ()
  • Filter()
  • Pijpleiding
  • regelen()

De bibliotheek met de naam dplyr bevat waardevolle werkwoorden om binnen de dataset te navigeren. Via deze tutorial maak je gebruik van de dataset Reistijden. De dataset verzamelt informatie over de rit die een chauffeur tussen zijn huis en zijn werkplek leidt. Er zijn veertien variabelen in de dataset, waaronder:

  • DayOfWeek: identificeer de dag van de week waarop de bestuurder zijn auto gebruikt
  • Afstand: de totale afstand van de reis
  • MaxSpeed: de maximale snelheid van de reis
  • TotalTime: de lengte in minuten van de reis

De dataset heeft ongeveer 200 waarnemingen in de dataset en de ritten vonden plaats van maandag tot en met vrijdag.

Allereerst moet u:

  • laad de dataset
  • controleer de structuur van de gegevens.

Een handige functie met dplyr is de functie glimpse (). Dit is een verbetering ten opzichte van str (). We kunnen glimpse () gebruiken om de structuur van de dataset te zien en te beslissen welke manipulatie vereist is.

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

Uitgang:

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

Dit is duidelijk dat de variabele Comments verdere diagnostiek nodig heeft. De eerste waarnemingen van de variabele Comments zijn alleen ontbrekende waarden.

sum(df$Comments =)

Code Verklaring

  • sum (df $ Comments == ""): Som van de waarnemingen is gelijk aan "" in de kolom met opmerkingen van df

Uitgang:

## [1] 181 

selecteer ()

We beginnen met het select () werkwoord. We hebben niet noodzakelijk alle variabelen nodig, en het is een goede gewoonte om alleen de variabelen te selecteren die u relevant vindt.

We hebben 181 ontbrekende waarnemingen, bijna 90 procent van de dataset. Als u besluit ze uit te sluiten, kunt u de analyse niet voortzetten.

De andere mogelijkheid is om de variabele Comment te laten vallen met het select () werkwoord.

We kunnen variabelen op verschillende manieren selecteren met select (). Merk op dat het eerste argument de dataset is.

- `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.

U kunt de derde manier gebruiken om de variabele Comments uit te sluiten.

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

Uitgang:

## [1] 205 14
dim(step_1_df)

Uitgang:

## [1] 205 13 

De originele dataset heeft 14 features, terwijl de step_1_df 13 heeft.

Filter()

Het werkwoord filter () helpt om de observaties volgens een criterium te houden. Het filter () werkt precies zoals select (), je geeft eerst het dataframe door en daarna een voorwaarde gescheiden door een komma:

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

Een criterium

Allereerst kunt u het aantal waarnemingen binnen elk niveau van een factorvariabele tellen.

table(step_1_df$GoingTo)

Code Verklaring

  • table (): Tel het aantal observaties op niveau. Let op: alleen variabelen op het factorniveau worden geaccepteerd
  • table (step_1_df $ GoingTo): tel het aantal reizen naar de eindbestemming.

Uitgang:

#### GSK Home## 105 100

De functietabel () geeft aan dat 105 ritten naar GSK gaan en 100 naar Home.

We kunnen de gegevens filteren om één dataset met 105 waarnemingen en een andere met 100 waarnemingen te retourneren.

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

Uitgang:

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

Uitgang:

## [1] 105 14 

Meerdere criteria

We kunnen een dataset filteren met meer dan één criterium. U kunt bijvoorbeeld de waarnemingen extraheren waar de bestemming Thuis is en plaatsvond op een woensdag.

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

Uitgang:

## [1] 23 14 

23 waarnemingen voldeden aan dit criterium.

Pijpleiding

Het aanmaken van een dataset vereist veel handelingen, zoals:

  • importeren
  • samenvoegen
  • selecteren
  • filteren
  • enzovoort

De dplyr-bibliotheek wordt geleverd met een praktische operator,%>%, genaamd de pijplijn . De pijplijnfunctie maakt de manipulatie schoon, snel en minder snel tot fouten.

Deze operator is een code die stappen uitvoert zonder tussenstappen op de harde schijf op te slaan. Als u van bovenaf terugkeert naar ons voorbeeld, kunt u de variabelen van belang selecteren en deze filteren. We hebben drie stappen:

  • Stap 1: gegevens importeren: importeer de gps-gegevens
  • Stap 2: Selecteer gegevens: Selecteer GoingTo en DayOfWeek
  • Stap 3: Filter gegevens: ga alleen terug naar huis en woensdag

We kunnen de moeilijke manier gebruiken om het te doen:

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

Uitgang:

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

Dat is geen gemakkelijke manier om veel bewerkingen uit te voeren, zeker niet in een situatie met veel stappen. In de omgeving worden veel objecten opgeslagen.

Laten we in plaats daarvan de pijplijnoperator%>% gebruiken. We hoeven alleen het dataframe te definiëren dat aan het begin werd gebruikt en het hele proces zal eruit vloeien.

Basissyntaxis van pijplijn

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.

U kunt uw eerste pijp maken door de hierboven opgesomde stappen te volgen.

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

Uitgang:

## [1] TRUE 

We zijn klaar om een ​​verbluffende dataset te maken met de pijplijnoperator.

regelen()

In de vorige tutorial leer je hoe je de waarden sorteert met de functie sort (). De bibliotheek dplyr heeft zijn sorteerfunctie. Het werkt als een zonnetje met de pijpleiding. Het werkwoord schikken () kan een of meerdere rijen opnieuw ordenen, oplopend (standaard) of aflopend.

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

We kunnen de afstand sorteren op bestemming.

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

Uitgang:

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

Overzicht

In de onderstaande tabel vat je alle bewerkingen samen die je tijdens de tutorial hebt geleerd.

Werkwoord Objectief Code Uitleg
glimp controleer de structuur van een df
glimpse(df)
Identiek aan str ()
selecteer () Selecteer / sluit de variabelen uit
select(df, A, B ,C)
Selecteer de variabelen A, B en C
select(df, A:C)
Selecteer alle variabelen van A tot C
select(df, -C)
Sluit C uit
filter() Filter de df op basis van een of meer voorwaarden
filter(df, condition1)
Een voorwaarde
filter(df, condition1
oplevering2)
regelen() Sorteer de dataset met een of meer variabelen
arrange(A)
Oplopend soort variabele A
arrange(A, B)
Oplopend soort variabele A en B
arrange(desc(A), B)
Aflopend soort van variabele A en oplopend soort B
Maak een pijplijn tussen elke stap
step 1 %>% step 2 %>% step 3