Selles õpetuses saate teada
- vali ()
- Filter ()
- Torujuhe
- korraldama()
Teek nimega dplyr sisaldab andmekogumis liikumiseks väärtuslikke verbe. Selle õpetuse kaudu saate kasutada reisi aegade andmekogumit. Andmekogum kogub juhi poolt kodu ja töökoha vahel teavet reisijuhtide kohta. Andmekogumis on neliteist muutujat, sealhulgas:
- DayOfWeek: tuvastage nädalapäev, mida juht kasutab oma autot
- Kaugus: kogu teekonna pikkus
- MaxSpeed: reisi maksimaalne kiirus
- TotalTime: teekonna pikkus minutites
Andmekogumis on andmekogus umbes 200 vaatlust ja sõidud toimusid esmaspäevast reedeni.
Kõigepealt peate:
- laadige andmekogum
- kontrollige andmete struktuuri.
Üks käepärane funktsioon dplyriga on funktsioon glimpse (). See on str () võrreldes parem. Andmekogumi struktuuri vaatamiseks ja manipuleerimise vajalikkuse otsustamiseks saame kasutada pilguheit ().
library(dplyr)PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"df <- read.csv(PATH)glimpse(df)
Väljund:
## 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…
See on ilmne, et muutuja Comments vajab täiendavat diagnostikat. Muutuja Kommentaaride esimesed tähelepanekud on ainult puuduvad väärtused.
sum(df$Comments =)
Koodi selgitus
- summa (df $ Kommentaarid == ""): summa vaatlused võrduvad väärtusega "" veeru df kommentaarides
Väljund:
## [1] 181
vali ()
Alustame verbiga select (). Me ei vaja tingimata kõiki muutujaid ja hea tava on valida ainult need muutujad, mis teile asjakohased on.
Meil on 181 puuduvat vaatlust, peaaegu 90 protsenti andmekogumist. Kui otsustate need välja jätta, ei saa te analüüsi jätkata.
Teine võimalus on visata muutuja Comment koos verbiga select ().
Muutujaid saame valida erineval viisil valiku () abil. Pange tähele, et esimene argument on andmekogum.
- `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.
Muutuja Kommentaarid välistamiseks võite kasutada kolmandat viisi.
step_1_df <- select(df, -Comments)dim(df)
Väljund:
## [1] 205 14
dim(step_1_df)
Väljund:
## [1] 205 13
Algsel andmekogul on 14 funktsiooni, samal ajal kui step_1_df-l on 13 funktsiooni.
Filter ()
Filter () aitab hoida vaatlusi kriteeriumide järgi. Filter () töötab täpselt nagu select (), edastate kõigepealt andmeraami ja seejärel komaga eraldatud tingimuse:
filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data
Üks kriteerium
Kõigepealt saate loendada vaatluste arvu teguri muutuja igal tasemel.
table(step_1_df$GoingTo)
Koodi selgitus
- tabel (): loendage vaatluste arv taseme järgi. Pange tähele, et aktsepteeritakse ainult teguri taseme muutujat
- tabel (step_1_df $ GoingTo): lugege lõppsihtkohta suunduvate reiside arv.
Väljund:
#### GSK Home## 105 100
Funktsioonitabel () näitab, et 105 sõitu läheb GSK-sse ja 100 koju.
Andmeid saame filtreerida, et tagastada üks andmekogum 105 vaatluse ja teine 100 vaatlusega.
# Select observationsif GoingTo == Homeselect_home <- filter(df, GoingTo == "Home")dim(select_home)
Väljund:
## [1] 100 14
# Select observationsif GoingTo == Workselect_work <- filter(df, GoingTo == "GSK")dim(select_work)
Väljund:
## [1] 105 14
Mitu kriteeriumi
Andmekogumit saame filtreerida rohkem kui ühe kriteeriumiga. Näiteks võite välja võtta vaatlused, kus sihtkohaks on kodu ja mis toimus kolmapäeval.
select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)
Väljund:
## [1] 23 14
Sellele kriteeriumile vastas 23 tähelepanekut.
Torujuhe
Andmekogumi loomine nõuab palju toiminguid, näiteks:
- importimine
- ühendamine
- valides
- filtreerimine
- ja nii edasi
Dplyri teegil on praktiline operaator%>%, mida nimetatakse torujuhtmeks . Torujuhtme funktsioon muudab manipuleerimise puhtaks, kiireks ja vähem vigade tekkimiseks.
See operaator on kood, mis sooritab samme ilma vaheastmeid kõvakettale salvestamata. Kui olete naasnud meie ülaltoodud näite juurde, saate valida huvipakkuvad muutujad ja need filtreerida. Meil on kolm sammu:
- 1. samm: andmete importimine: GPS-i andmete importimine
- 2. samm: valige andmed: valige GoingTo ja DayOfWeek
- 3. samm: andmete filtreerimine: naaske ainult koju ja kolmapäeval
Saame kasutada rasket viisi:
# 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)
Väljund:
## GoingTo DayOfWeek## 1 Home Wednesday## 2 Home Wednesday## 3 Home Wednesday## 4 Home Wednesday## 5 Home Wednesday## 6 Home Wednesday
See ei ole mugav viis paljude toimingute tegemiseks, eriti olukorras, kus on palju samme. Keskkond lõpeb paljude objektide salvestamisega.
Kasutame selle asemel torujuhtme operaatorit%>%. Peame määratlema ainult alguses kasutatud andmeraami ja kogu protsess voolab sellest.
Torujuhtme põhisüntaks
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.
Esimese toru saate luua ülaltoodud sammude järgi.
# 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)
Väljund:
## [1] TRUE
Oleme valmis looma torujuhtmega operaatoriga uimastamise andmekogumi.
korraldama()
Eelmises õpetuses saate teada, kuidas väärtusi sortida funktsiooni sort () abil. Raamatukogul dplyr on oma sortimisfunktsioon. See töötab torujuhtmega nagu võlu. Verb korraldada () võib järjestada ühe või mitu rida, kas tõusvas (vaikimisi) või kahanevas reas.
- `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
Saame sortida vahemaad sihtkoha järgi.
# Sort by destination and distancestep_2_df <-step_1_df %>%arrange(GoingTo, Distance)headVäljund:
## 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 NoKokkuvõte
Alljärgnevas tabelis võtate kokku kõik õpetuse käigus õpitud toimingud.
Tegusõna Eesmärk Kood Selgitus pilguheit kontrollige df struktuuri glimpse(df)Stringiga () identne vali () Valige / välistage muutujad select(df, A, B ,C)Valige muutujad A, B ja C select(df, A:C)Valige kõik muutujad A-st C-ni select(df, -C)Välista C filter () Filtreerige df ühe või mitme tingimuse põhjal filter(df, condition1)Üks tingimus filter(df, condition1lisamine2) korraldama() Sorteeri andmekogum ühe või mitme muutujaga arrange(A)Muutuja A kasvav sort arrange(A, B)Muutuja A ja B kasvav sort arrange(desc(A), B)Muutuja A kahanev sort ja B kasvav sort %>% Looge iga sammu vahele torujuhe step 1 %>% step 2 %>% step 3