R Atlasiet (), Filtrs (), Sakārtojiet (), Cauruļvads ar piemēru

Satura rādītājs:

Anonim

Š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## $ X  1, 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)head

Izeja:

## 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 No

Kopsavilkums

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, condition1
papildinā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