Šajā apmācībā jūs uzzināsiet
- atlasīt ()
- Filtrs ()
- Cauruļvads
- sakārtot ()
Bibliotēkā ar nosaukumu dplyr ir vērtīgi darbības vārdi, lai pārvietotos datu kopā. Izmantojot šo apmācību, jūs izmantosiet datu kopu Ceļojuma laiki. Datu kopa apkopo informāciju par braucēja vadību starp mājām un darba vietu. Datu kopā ir četrpadsmit mainīgie, tostarp:
- DayOfWeek: norādiet nedēļas dienu, kurā vadītājs izmanto savu automašīnu
- Attālums: kopējais brauciena attālums
- MaxSpeed: maksimālais brauciena ātrums
- TotalTime: brauciena ilgums minūtēs
Datu kopā ir aptuveni 200 novērojumu, un braucieni notika no pirmdienas līdz piektdienai.
Pirmkārt, jums ir nepieciešams:
- ielādēt datu kopu
- pārbaudiet datu struktūru.
Viena ērta funkcija ar dplyr ir funkcija glimpse (). Tas ir uzlabojums salīdzinājumā ar str (). Mēs varam izmantot ieskatu (), lai redzētu datu kopas struktūru un izlemtu, kāda manipulācija ir nepieciešama.
library(dplyr)PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"df <- read.csv(PATH)glimpse(df)
Izeja:
## 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…
Tas ir acīmredzami, ka mainīgajam komentāriem ir nepieciešama papildu diagnostika. Pirmajos komentāru mainīgā novērojumos trūkst tikai vērtību.
sum(df$Comments =)
Kods Paskaidrojums
- summa (df $ Comments == ""): summējiet novērojumus, kas vienādi ar "" kolonnas komentāros no df
Izeja:
## [1] 181
atlasīt ()
Mēs sāksim ar darbības vārdu select (). Mums nav obligāti vajadzīgi visi mainīgie, un laba prakse ir atlasīt tikai tos mainīgos, kuri jums šķiet atbilstoši.
Mums ir 181 trūkstošs novērojums, gandrīz 90 procenti datu kopas. Ja jūs nolemjat tos izslēgt, jūs nevarēsiet turpināt analīzi.
Otra iespēja ir nomest mainīgo Comment ar darbības vārdu select ().
Mēs varam atlasīt mainīgos dažādos veidos, izmantojot select (). Ņemiet vērā, ka pirmais arguments ir datu kopa.
- `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.
Varat izmantot trešo veidu, lai izslēgtu mainīgo Komentāri.
step_1_df <- select(df, -Comments)dim(df)
Izeja:
## [1] 205 14
dim(step_1_df)
Izeja:
## [1] 205 13
Sākotnējā datu kopā ir 14 funkcijas, bet step_1_df - 13.
Filtrs ()
Filtrs () darbības vārds palīdz saglabāt novērojumus pēc kritērijiem. Filtrs () darbojas tieši tāpat kā select (), vispirms tiek nodots datu rāmis un pēc tam nosacījums, kas atdalīts ar komatu:
filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data
Viens kritērijs
Pirmkārt, jūs varat saskaitīt novērojumu skaitu katrā faktora mainīgā līmenī.
table(step_1_df$GoingTo)
Kods Paskaidrojums
- tabula (): saskaitiet novērojumu skaitu pēc līmeņa. Ņemiet vērā, ka tiek pieņemti tikai faktora līmeņa mainīgie
- tabula (step_1_df $ GoingTo): saskaitiet braucienu skaitu uz galamērķi.
Izeja:
#### GSK Home## 105 100
Funkciju tabula () norāda, ka 105 braucieni notiek uz GSK un 100 braucieni uz mājām.
Mēs varam filtrēt datus, lai atgrieztu vienu datu kopu ar 105 novērojumiem un otru ar 100 novērojumiem.
# Select observationsif GoingTo == Homeselect_home <- filter(df, GoingTo == "Home")dim(select_home)
Izeja:
## [1] 100 14
# Select observationsif GoingTo == Workselect_work <- filter(df, GoingTo == "GSK")dim(select_work)
Izeja:
## [1] 105 14
Vairāki kritēriji
Mēs varam filtrēt datu kopu ar vairāk nekā vienu kritēriju. Piemēram, varat iegūt novērojumus, kur galamērķis ir Mājas un kas notika trešdien.
select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)
Izeja:
## [1] 23 14
Šim kritērijam atbilda 23 novērojumi.
Cauruļvads
Datu kopas izveide prasa daudz darbību, piemēram:
- importēšana
- apvienošanās
- atlasot
- filtrēšana
- un tā tālāk
Dplyr bibliotēkai ir praktisks operators,%>%, ko sauc par cauruļvadu . Cauruļvada funkcija padara manipulāciju tīru, ātru un mazāk kļūdainu.
Šis operators ir kods, kas veic darbības, nesaglabājot starpposmus cietajā diskā. Ja esat atgriezies pie mūsu piemēra no augšas, varat atlasīt interesējošos mainīgos un tos filtrēt. Mums ir trīs darbības:
- 1. darbība: datu importēšana: importējiet GPS datus
- 2. solis: Atlasiet datus: atlasiet GoingTo un DayOfWeek
- 3. darbība: filtrējiet datus: atgriezieties tikai mājās un trešdien
Mēs to varam izmantot grūtajā veidā:
# 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)
Izeja:
## GoingTo DayOfWeek## 1 Home Wednesday## 2 Home Wednesday## 3 Home Wednesday## 4 Home Wednesday## 5 Home Wednesday## 6 Home Wednesday
Tas nav ērts veids, kā veikt daudzas darbības, it īpaši situācijā ar daudzām darbībām. Vide beidzas ar daudz objektu glabāšanu.
Tā vietā izmantosim cauruļvada operatoru%>%. Mums ir jādefinē tikai sākumā izmantotais datu rāmis, un no tā plūdīs viss process.
Cauruļvada pamata sintakse
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.
Pirmo cauruli varat izveidot, izpildot iepriekš uzskaitītās darbības.
# 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)
Izeja:
## [1] TRUE
Mēs esam gatavi izveidot satriecošu datu kopu ar cauruļvada operatoru.
sakārtot ()
Iepriekšējā apmācībā jūs uzzināt, kā kārtot vērtības ar funkciju sort (). Bibliotēkai dplyr ir sava šķirošanas funkcija. Tas darbojas kā šarms ar cauruļvadu. Vārds korraldīt () var pārkārtot vienu vai vairākas rindas, vai nu augšupejošā (noklusējuma), vai dilstošā secībā.
- `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
Mēs varam šķirot attālumu pēc galamērķa.
# Sort by destination and distancestep_2_df <-step_1_df %>%arrange(GoingTo, Distance)headIzeja:
## 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 NoKopsavilkums
Zemāk esošajā tabulā jūs apkopojat visas apmācības laikā apgūtās darbības.
Darbības vārds Mērķis Kods Paskaidrojums ieskats pārbaudiet df struktūru glimpse(df)Identisks str () atlasīt () Atlasiet / izslēdziet mainīgos select(df, A, B ,C)Atlasiet mainīgos A, B un C select(df, A:C)Atlasiet visus mainīgos no A līdz C select(df, -C)Izslēgt C filtrs () Filtrējiet df, pamatojoties uz vienu vai daudziem nosacījumiem filter(df, condition1)Viens nosacījums filter(df, condition1papildinājums2) sakārtot () Kārtojiet datu kopu ar vienu vai daudziem mainīgajiem arrange(A)Mainīgā lieluma A veida pieaugums arrange(A, B)Mainīgā lieluma A un B veida pieaugums arrange(desc(A), B)Dilstošā veida mainīgais A un augošā B tips %>% Starp katru soli izveidojiet cauruļvadu step 1 %>% step 2 %>% step 3