U ovom ćete tutorijalu naučiti
- Izaberi()
- Filtar()
- Cjevovod
- dogovoriti ()
Biblioteka pod nazivom dplyr sadrži vrijedne glagole za kretanje unutar skupa podataka. Kroz ovaj vodič upotrijebit ćete skup podataka Travel times. Skup podataka prikuplja podatke o putovanju koje vozač vodi od kuće do radnog mjesta. U skupu podataka postoji četrnaest varijabli, uključujući:
- DayOfWeek: Odredite dan u tjednu u kojem vozač koristi svoj automobil
- Udaljenost: Ukupna udaljenost putovanja
- MaxSpeed: maksimalna brzina putovanja
- TotalTime: Duljina putovanja u minutama
Skup podataka sadrži oko 200 promatranja, a vožnje su se odvijale između ponedjeljka i petka.
Prije svega, trebate:
- učitati skup podataka
- provjeriti strukturu podataka.
Jedna korisna značajka dplyra je funkcija glimpse (). Ovo je poboljšanje u odnosu na str (). Pomoću glimpse () možemo vidjeti strukturu skupa podataka i odlučiti koja je manipulacija potrebna.
library(dplyr)PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"df <- read.csv(PATH)glimpse(df)
Izlaz:
## 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…
Očito je da varijabla Komentari treba daljnju dijagnostiku. Prvim zapažanjima varijable Comments nedostaju samo vrijednosti.
sum(df$Comments =)
Objašnjenje koda
- zbroj (df $ Komentari == ""): Zbroj zapažanja jednaka "" u komentaru stupca iz df
Izlaz:
## [1] 181
Izaberi()
Započet ćemo s glagolom select (). Ne trebaju nam sve varijable, a dobra praksa je odabrati samo one varijable koje smatrate relevantnima.
Nedostaje nam 181 opažanje, gotovo 90 posto skupa podataka. Ako ih odlučite izuzeti, nećete moći nastaviti s analizom.
Druga je mogućnost ispuštanje varijable Comment uz glagol select ().
Varijable možemo odabrati na različite načine pomoću select (). Imajte na umu da je prvi argument skup podataka.
- `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.
Možete koristiti treći način za izuzeće varijable Komentari.
step_1_df <- select(df, -Comments)dim(df)
Izlaz:
## [1] 205 14
dim(step_1_df)
Izlaz:
## [1] 205 13
Izvorni skup podataka sadrži 14 značajki, dok step_1_df ima 13.
Filtar()
Glagol filtra () pomaže da promatranja budu u skladu s kriterijima. Filtar () radi točno kao select (), prvo proslijedite okvir podataka, a zatim uvjet odvojen zarezom:
filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data
Jedan kriterij
Prije svega, možete izbrojati broj promatranja unutar svake razine faktor varijable.
table(step_1_df$GoingTo)
Objašnjenje koda
- tablica (): Broji broj promatranja prema razini. Napomena, prihvaćene su samo varijable na razini faktora
- tablica (korak_1_df $ GoingTo): Broji broj putovanja prema konačnom odredištu.
Izlaz:
#### GSK Home## 105 100
Tablica funkcija () pokazuje da 105 vožnji ide prema GSK, a 100 prema kući.
Podatke možemo filtrirati da bismo vratili jedan skup podataka sa 105 promatranja, a drugi sa 100 promatranja.
# Select observationsif GoingTo == Homeselect_home <- filter(df, GoingTo == "Home")dim(select_home)
Izlaz:
## [1] 100 14
# Select observationsif GoingTo == Workselect_work <- filter(df, GoingTo == "GSK")dim(select_work)
Izlaz:
## [1] 105 14
Višestruki kriteriji
Skup podataka možemo filtrirati s više od jednog kriterija. Na primjer, možete izvući opažanja tamo gdje je odredište Dom, a dogodilo se u srijedu.
select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)
Izlaz:
## [1] 23 14
23 su promatranja odgovarala ovom kriteriju.
Cjevovod
Stvaranje skupa podataka zahtijeva puno operacija, kao što su:
- uvoz
- spajanje
- odabirući
- filtriranje
- i tako dalje
Knjižnica dplyr dolazi s praktičnim operatorom,%>, koji se naziva cjevovod . Značajka cjevovoda čini manipulaciju čistom, brzom i manje brzom za pogrešku.
Ovaj je operater kôd koji izvodi korake bez spremanja međukoraka na tvrdi disk. Ako ste se vratili našem primjeru odozgo, možete odabrati varijable od interesa i filtrirati ih. Imamo tri koraka:
- Korak 1: Uvoz podataka: Uvoz gps podataka
- Korak 2: Odabir podataka: Odaberite GoingTo i DayOfWeek
- Korak 3: Filtriranje podataka: Povratak samo kući i srijedi
To možemo koristiti teži način:
# 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)
Izlaz:
## GoingTo DayOfWeek## 1 Home Wednesday## 2 Home Wednesday## 3 Home Wednesday## 4 Home Wednesday## 5 Home Wednesday## 6 Home Wednesday
To nije prikladan način za izvođenje mnogih operacija, posebno u situaciji s puno koraka. Okoliš završava s puno spremljenih predmeta.
Umjesto toga upotrijebimo operator cjevovoda%>%. Trebamo definirati podatkovni okvir koji se koristio na početku i iz njega će poteći sav proces.
Osnovna sintaksa cjevovoda
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.
Možete stvoriti svoju prvu cijev slijedeći gore navedene korake.
# 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)
Izlaz:
## [1] TRUE
Spremni smo stvoriti zapanjujući skup podataka s operatorom cjevovoda.
dogovoriti ()
U prethodnom tutorialu naučili ste kako sortirati vrijednosti pomoću funkcije sort (). Biblioteka dplyr ima svoju funkciju sortiranja. Djeluje poput šarma s cjevovodom. Glagol aranžman () može preuređivati jedan ili više redaka, uzlazno (zadano) ili silazno.
- `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
Udaljenost možemo sortirati prema odredištu.
# Sort by destination and distancestep_2_df <-step_1_df %>%arrange(GoingTo, Distance)headIzlaz:
## 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 NoSažetak
U donjoj tablici sažimate sve radnje koje ste naučili tijekom poduke.
Glagol Cilj Kodirati Obrazloženje uvid provjeriti strukturu df-a glimpse(df)Identično str () Izaberi() Odaberite / izuzmite varijable select(df, A, B ,C)Odaberite varijable A, B i C select(df, A:C)Odaberite sve varijable od A do C select(df, -C)Izuzmi C filtar() Filtrirajte df na temelju jednog ili više uvjeta filter(df, condition1)Jedan uvjet filter(df, condition1uvjet2) dogovoriti () Sortirajte skup podataka s jednom ili više varijabli arrange(A)Uzlazna vrsta varijable A arrange(A, B)Rastuća vrsta varijabli A i B arrange(desc(A), B)Silazna varijabla A i uzlazna B %>% Izradite cjevovod između svakog koraka step 1 %>% step 2 %>% step 3