Šioje pamokoje sužinosite
- pasirinkti ()
- Filtras()
- Vamzdynas
- sutvarkyti ()
Bibliotekoje, vadinamoje dplyr, yra vertingų veiksmažodžių, kuriuos reikia naršyti duomenų rinkinyje. Per šią pamoką naudosite kelionės laiko duomenų rinkinį. Duomenų rinkinys renka informaciją apie vairuotojo keliones tarp namų ir darbovietės. Duomenų rinkinyje yra keturiolika kintamųjų, įskaitant:
- DayOfWeek: Nurodykite savaitės dieną, kurią vairuotojas naudoja savo automobiliu
- Atstumas: bendras kelionės atstumas
- „MaxSpeed“: maksimalus kelionės greitis
- „TotalTime“: kelionės trukmė minutėmis
Duomenų rinkinyje yra apie 200 stebėjimų, o važiavimai vyko nuo pirmadienio iki penktadienio.
Pirmiausia turite:
- įkelti duomenų rinkinį
- patikrinti duomenų struktūrą.
Viena patogi funkcija su dplyr yra žvilgsnio () funkcija. Tai yra str () patobulinimas. Galime naudoti žvilgsnį () norėdami pamatyti duomenų rinkinio struktūrą ir nuspręsti, kokių manipuliacijų reikia.
library(dplyr)PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"df <- read.csv(PATH)glimpse(df)
Išvestis:
## 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…
Tai akivaizdu, kad kintamąjį „Komentarai“ reikia toliau diagnozuoti. Pirmieji kintamojo komentarų stebėjimai neturi tik reikšmių.
sum(df$Comments =)
Kodo paaiškinimas
- suma (df $ komentarai == ""): suma, pastebėjimų suma lygi "" stulpelio komentaruose iš df
Išvestis:
## [1] 181
pasirinkti ()
Pradėsime veiksmažodžiu select (). Mums nebūtinai reikia visų kintamųjų, o gera praktika yra pasirinkti tik tuos kintamuosius, kurie jums atrodo svarbūs.
Mes turime 181 trūkstamą stebėjimą, beveik 90 procentų duomenų rinkinio. Jei nuspręsite juos išskirti, negalėsite tęsti analizės.
Kita galimybė yra mesti kintamąjį Komentaras su veiksmažodžiu select ().
Kintamuosius galime pasirinkti įvairiais būdais naudodami select (). Atkreipkite dėmesį, kad pirmasis argumentas yra duomenų rinkinys.
- `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.
Norėdami pašalinti komentarų kintamąjį, galite naudoti trečiąjį būdą.
step_1_df <- select(df, -Comments)dim(df)
Išvestis:
## [1] 205 14
dim(step_1_df)
Išvestis:
## [1] 205 13
Originaliame duomenų rinkinyje yra 14 funkcijų, o step_1_df - 13.
Filtras()
Veiksmažodis filtras () padeda išlaikyti stebėjimus pagal kriterijus. Filtras () veikia lygiai taip pat, kaip select (), pirmiausia perduodate duomenų rėmelį ir tada kableliu atskirtą sąlygą:
filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data
Vienas kriterijus
Visų pirma, galite suskaičiuoti stebėjimų skaičių kiekviename veiksnio kintamojo lygyje.
table(step_1_df$GoingTo)
Kodo paaiškinimas
- lentelė (): suskaičiuokite stebėjimų skaičių pagal lygį. Atkreipkite dėmesį, priimami tik faktoriaus lygio kintamieji
- lentelė (step_1_df $ GoingTo): suskaičiuokite kelionių į galutinį tikslą skaičių.
Išvestis:
#### GSK Home## 105 100
Funkcijų lentelėje () nurodoma, kad 105 važiavimai vyksta į GSK, o 100 - į namus.
Mes galime filtruoti duomenis, kad gautume vieną duomenų rinkinį su 105 stebėjimais ir kitą su 100 stebėjimų.
# Select observationsif GoingTo == Homeselect_home <- filter(df, GoingTo == "Home")dim(select_home)
Išvestis:
## [1] 100 14
# Select observationsif GoingTo == Workselect_work <- filter(df, GoingTo == "GSK")dim(select_work)
Išvestis:
## [1] 105 14
Keli kriterijai
Mes galime filtruoti duomenų rinkinį pagal daugiau nei vieną kriterijų. Pavyzdžiui, galite išskirti stebėjimus, kur kelionės tikslas yra Namai ir įvyko trečiadienį.
select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)
Išvestis:
## [1] 23 14
Šį kriterijų atitiko 23 stebėjimai.
Vamzdynas
Norėdami sukurti duomenų rinkinį, reikia atlikti daug operacijų, tokių kaip:
- importuojantis
- susiliejimas
- pasirinkdami
- filtravimas
- ir taip toliau
„Dplyr“ bibliotekoje yra praktinis operatorius,%>%, vadinamas dujotiekiu . Dujotiekio funkcija leidžia manipuliuoti švariai, greitai ir rečiau klaidinant.
Šis operatorius yra kodas, kuris atlieka veiksmus neišsaugodamas tarpinių veiksmų kietajame diske. Jei grįžtate prie mūsų pavyzdžio iš viršaus, galite pasirinkti dominančius kintamuosius ir juos filtruoti. Mes turime tris veiksmus:
- 1 veiksmas: duomenų importavimas: importuokite GPS duomenis
- 2 žingsnis: Pasirinkite duomenis: pasirinkite „GoingTo“ ir „DayOfWeek“
- 3 žingsnis: filtruokite duomenis: grįžkite tik namo ir trečiadienį
Mes galime tai padaryti sunkiu būdu:
# 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)
Išvestis:
## GoingTo DayOfWeek## 1 Home Wednesday## 2 Home Wednesday## 3 Home Wednesday## 4 Home Wednesday## 5 Home Wednesday## 6 Home Wednesday
Tai nėra patogus būdas atlikti daug operacijų, ypač situacijoje su daugybe žingsnių. Aplinka baigia saugoti daug objektų.
Vietoj to naudokime dujotiekio operatorių%>%. Turime apibrėžti tik pradžioje naudojamą duomenų rėmą, ir iš jo eis visas procesas.
Pagrindinė dujotiekio sintaksė
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.
Pirmąjį vamzdį galite sukurti atlikdami anksčiau išvardytus veiksmus.
# 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)
Išvestis:
## [1] TRUE
Esame pasirengę sukurti nuostabų duomenų rinkinį su dujotiekio operatoriumi.
sutvarkyti ()
Ankstesnėje pamokoje sužinosite, kaip rūšiuoti reikšmes naudojant funkciją rūšiuoti (). Biblioteka dplyr turi savo rūšiavimo funkciją. Tai veikia kaip žavesys dujotiekiu. Veiksmažodis „korraldyti“ („)“ gali pertvarkyti vieną ar kelias eilutes, kylančią (numatytoji) arba mažėjančią.
- `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
Mes galime rūšiuoti atstumą pagal paskirties vietą.
# Sort by destination and distancestep_2_df <-step_1_df %>%arrange(GoingTo, Distance)headIšvestis:
## 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 NoSantrauka
Žemiau esančioje lentelėje apibendrinate visas operacijas, kurias išmokote per mokymo programą.
Veiksmažodis Tikslas Kodas Paaiškinimas žvilgsnis patikrinti df struktūrą glimpse(df)Tapatus str () pasirinkti () Pasirinkite / išskirkite kintamuosius select(df, A, B ,C)Pasirinkite kintamuosius A, B ir C select(df, A:C)Pasirinkite visus kintamuosius nuo A iki C select(df, -C)Neįtraukite C filtras() Filtruokite df pagal vieną ar kelias sąlygas filter(df, condition1)Viena sąlyga filter(df, condition1papildymas2) sutvarkyti () Rūšiuoti duomenų rinkinį su vienu ar keliais kintamaisiais arrange(A)Didėjantis kintamojo A rūšis arrange(A, B)Didėjanti kintamųjų A ir B rūšis arrange(desc(A), B)Mažėjančio kintamojo A rūšis ir B kylančioji rūšis %>% Sukurkite dujotiekį tarp kiekvieno žingsnio step 1 %>% step 2 %>% step 3