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## $ 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…
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)headTuotos:
## 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 NoYhteenveto
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, condition12) 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