R Valitse (), Suodatin (), Järjestä (), Putki esimerkillä

Sisällysluettelo:

Anonim

Tässä opetusohjelmassa opit

  • valitse ()
  • Suodattaa()
  • Putki
  • järjestää()

Dplyr-niminen kirjasto sisältää arvokkaita verbejä, joiden avulla voit liikkua aineiston sisällä. Tämän opetusohjelman kautta käytät Matka-ajat-tietojoukkoa. Aineisto kerää kuljettajan tietoja matkan johdosta kodin ja työpaikan välillä. Tietojoukossa on neljätoista muuttujaa, mukaan lukien:

  • DayOfWeek: Määritä viikonpäivä, jonka kuljettaja käyttää autollaan
  • Etäisyys: Matkan kokonaismatka
  • MaxSpeed: Matkan suurin nopeus
  • TotalTime: Matkan pituus minuutteina

Aineistossa on noin 200 havaintoa, ja ajo tapahtui maanantaista perjantaihin.

Ensinnäkin sinun on:

  • lataa tietojoukko
  • tarkista tietojen rakenne.

Yksi kätevä ominaisuus dplyrin kanssa on välähdys () -toiminto. Tämä on parannus str (): een nähden. Voimme käyttää välähdystä () nähdäksesi tietojoukon rakenteen ja päättää, mitä manipulointia tarvitaan.

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

Tuotos:

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

Tämä on ilmeistä, että muuttuja Comments tarvitsee lisädiagnostiikkaa. Kommentit-muuttujan ensimmäiset havainnot ovat vain puuttuvia arvoja.

sum(df$Comments =)

Koodin selitys

  • summa (df $ Comments == ""): Summa havaintojen summa on sama kuin df: n sarakkeen kommentit

Tuotos:

## [1] 181 

valitse ()

Aloitetaan select () verbillä. Emme välttämättä tarvitse kaikkia muuttujia, ja hyvä käytäntö on valita vain sinulle tärkeät muuttujat.

Meillä on 181 puuttuvaa havaintoa, melkein 90 prosenttia aineistosta. Jos päätät sulkea ne pois, et voi jatkaa analyysiä.

Toinen mahdollisuus on pudottaa muuttuja Kommentti verbillä select ().

Voimme valita muuttujia eri tavoin valitsemalla (). Huomaa, että ensimmäinen argumentti on tietojoukko.

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

Voit käyttää kolmatta tapaa sulkea pois kommenttimuuttujat.

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

Tuotos:

## [1] 205 14
dim(step_1_df)

Tuotos:

## [1] 205 13 

Alkuperäisessä tietojoukossa on 14 ominaisuutta, kun taas step_1_df-tiedostossa on 13 ominaisuutta.

Suodattaa()

Suodatin () -verbi auttaa pitämään havainnot kriteerien mukaisina. Suodatin () toimii täsmälleen kuten select (), välität ensin datakehyksen ja sitten pilkulla erotetun ehdon:

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

Yksi kriteeri

Ensinnäkin voit laskea havaintojen määrän tekijämuuttujan kullakin tasolla.

table(step_1_df$GoingTo)

Koodin selitys

  • taulukko (): Laske havaintojen määrä tason mukaan. Huomaa, että vain tekijätason muuttujat hyväksytään
  • taulukko (step_1_df $ GoingTo): Laske matkojen määrä määränpäähän.

Tuotos:

#### GSK Home## 105 100

Toimintotaulukko () osoittaa, että 105 ratsastusta menee GSK: lle ja 100 kotiin.

Voimme suodattaa tiedot palauttamaan yhden aineiston 105 havainnolla ja toisen 100 havainnolla.

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

Tuotos:

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

Tuotos:

## [1] 105 14 

Useita kriteerejä

Voimme suodattaa tietojoukon useammalla kuin yhdellä ehdolla. Voit esimerkiksi poimia havainnot, joissa kohde on Koti ja tapahtui keskiviikkona.

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

Tuotos:

## [1] 23 14 

23 havaintoa vastasi tätä kriteeriä.

Putki

Tietojoukon luominen vaatii paljon toimintoja, kuten:

  • tuonti
  • sulautuminen
  • valitsemalla
  • suodatus
  • ja niin edelleen

Dplyr kirjasto mukana käytännön toimija,%>%, kutsutaan putki . Putkisto-ominaisuus tekee manipuloinnista puhtaan, nopean ja vähemmän virheellisen.

Tämä operaattori on koodi, joka suorittaa vaiheet tallentamatta välivaiheita kiintolevylle. Jos olet palannut esimerkkimme ylhäältä, voit valita kiinnostavat muuttujat ja suodattaa ne. Meillä on kolme vaihetta:

  • Vaihe 1: Tuo tiedot: Tuo GPS-tiedot
  • Vaihe 2: Valitse tiedot: Valitse GoingTo ja DayOfWeek
  • Vaihe 3: Suodata tiedot: Palaa vain kotiin ja keskiviikkoon

Voimme käyttää kovaa tapaa tehdä se:

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

Tuotos:

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

Se ei ole kätevä tapa suorittaa monia toimintoja, varsinkin tilanteessa, jossa on paljon vaiheita. Ympäristö loppuu siihen, että paljon esineitä on tallennettu.

Käytetään sen sijaan putkioperaattoria%>%. Meidän on määriteltävä vain alussa käytetty tietokehys, ja kaikki prosessi virtaa siitä.

Putkilinjan perussyntaksi

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.

Voit luoda ensimmäisen putken noudattamalla yllä lueteltuja vaiheita.

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

Tuotos:

## [1] TRUE 

Olemme valmiita luomaan upean tietojoukon putkioperaattorin kanssa.

järjestää()

Edellisessä opetusohjelmassa opit kuinka arvot lajitellaan funktion lajittelun () avulla. Dplyrin kirjastolla on lajittelutoiminto. Se toimii kuin viehätys putkilinjalla. Järjestä () -verbi voi järjestää yhden tai useita rivejä, joko nousevassa (oletus) tai laskevassa rivissä.

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

Voimme lajitella etäisyyden määränpään mukaan.

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

Tuotos:

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

Yhteenveto

Seuraavassa taulukossa on yhteenveto kaikista opetusohjelman aikana oppimistasi toiminnoista.

Verbi Tavoite Koodi Selitys
välähdys tarkista df: n rakenne
glimpse(df)
Sama kuin str ()
valitse () Valitse / poista muuttujat
select(df, A, B ,C)
Valitse muuttujat A, B ja C
select(df, A:C)
Valitse kaikki muuttujat välillä A - C
select(df, -C)
Sulje pois C
suodattaa() Suodata df yhden tai useamman ehdon perusteella
filter(df, condition1)
Yksi ehto
filter(df, condition1
2)
järjestää() Lajittele tietojoukko yhdellä tai monella muuttujalla
arrange(A)
Muuttujan A nouseva lajike
arrange(A, B)
Muuttujien A ja B nouseva lajike
arrange(desc(A), B)
Muuttujan A laskeva lajike ja nouseva lajike B
%>% Luo putki jokaisen vaiheen väliin
step 1 %>% step 2 %>% step 3