R Válassza a (), a Szűrő (), az Elrendezés (), a Csővezeték példával lehetőséget

Tartalomjegyzék:

Anonim

Ebben az oktatóanyagban megtanulja

  • válassza ()
  • Szűrő()
  • Csővezeték
  • rendezni()

A dplyr nevű könyvtár értékes igéket tartalmaz az adatkészlet belsejében való navigáláshoz. Ezen az oktatóanyagon keresztül az Utazási idők adatkészletet fogja használni. Az adatgyűjtemény információkat gyűjt a járművezető által az otthona és a munkahelye közötti vezetésről. Tizennégy változó van az adatkészletben, beleértve:

  • DayOfWeek: Határozza meg a hét napját, amikor a sofőr használja az autóját
  • Távolság: Az út teljes távolsága
  • MaxSpeed: Az utazás maximális sebessége
  • TotalTime: Az út hossza percekben

Az adatkészletnek körülbelül 200 megfigyelése van az adatkészletben, és a túrák hétfőtől péntekig zajlottak.

Először:

  • töltse be az adatkészletet
  • ellenőrizze az adatok szerkezetét.

A dplyr egyik praktikus szolgáltatása a glimpse () függvény. Ez javulás az str () -hez képest. A glimpse () segítségével megtekinthetjük az adatkészlet felépítését és eldönthetjük, hogy milyen manipulációra van szükség.

library(dplyr)PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"df <- read.csv(PATH)glimpse(df)

Kimenet:

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

Ez nyilvánvaló, hogy a Comments változó további diagnosztikát igényel. A Comments változó első megfigyelései csak hiányzó értékeket tartalmaznak.

sum(df$Comments =)

Kód Magyarázat

  • összeg (df $ Comments == ""): Összegezze a megfigyeléseket, amelyek megegyeznek a "" oszlopban a df észrevételeivel

Kimenet:

## [1] 181 

válassza ()

Kezdjük a select () igével. Nem feltétlenül van szükségünk minden változóra, és jó gyakorlat az, hogy csak azokat a változókat választjuk ki, amelyek relevánsnak találnak.

181 hiányzó megfigyelésünk van, az adatkészlet majdnem 90 százaléka. Ha úgy dönt, hogy kizárja őket, akkor nem tudja folytatni az elemzést.

A másik lehetőség a Comment változó eldobása a select () igével.

A változókat a select () segítségével különböző módon választhatjuk ki. Vegye figyelembe, hogy az első argumentum az adatkészlet.

- `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.

A Megjegyzés változó kizárásához használhatja a harmadik módszert.

step_1_df <- select(df, -Comments)dim(df)

Kimenet:

## [1] 205 14
dim(step_1_df)

Kimenet:

## [1] 205 13 

Az eredeti adatkészlet 14 funkcióval rendelkezik, míg a step_1_df 13.

Szűrő()

A filter () ige segít megtartani a megfigyeléseket egy kritérium alapján. A szűrő () pontosan úgy működik, mint a select (), először adja át az adatkeretet, majd vesszővel elválasztott feltételt:

filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data

Egy kritérium

Először is meg lehet számolni a tényezők változóinak egyes szintjein belüli megfigyelések számát.

table(step_1_df$GoingTo)

Kód Magyarázat

  • táblázat (): Számolja meg a megfigyelések számát szintenként. Megjegyzés: csak tényező szintű változó fogadható el
  • táblázat (step_1_df $ GoingTo): Számolja meg a végcél felé tartó utak számát.

Kimenet:

#### GSK Home## 105 100

A függvénytáblázat () azt jelzi, hogy 105 túra megy a GSK-ra, 100 pedig haza.

Szűrhetjük az adatokat, hogy az egyik adatkészlet 105, a másik 100 megfigyeléssel térjen vissza.

# Select observationsif GoingTo == Homeselect_home <- filter(df, GoingTo == "Home")dim(select_home)

Kimenet:

## [1] 100 14
# Select observationsif GoingTo == Workselect_work <- filter(df, GoingTo == "GSK")dim(select_work)

Kimenet:

## [1] 105 14 

Több kritérium

Több kritériummal is szűrhetünk egy adathalmazt. Például kivonhatja azokat a megfigyeléseket, ahol a cél az Otthon és szerdán történt.

select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)

Kimenet:

## [1] 23 14 

23 megfigyelés felelt meg ennek a kritériumnak.

Csővezeték

Az adatkészlet létrehozása sok műveletet igényel, például:

  • importálás
  • összeolvad
  • kiválasztása
  • szűrő
  • stb

A dplyr könyvtárhoz tartozik egy gyakorlati operátor,%>%, a csővezeték . A csővezeték szolgáltatása miatt a manipuláció tiszta, gyors és kevésbé gyors hiba.

Ez az operátor olyan kód, amely a közbenső lépések mentése nélkül hajt végre lépéseket a merevlemezre. Ha visszatért a fenti példánkhoz, kiválaszthatja az érdeklődésre számot tartó változókat és szűrheti őket. Három lépés van:

  • 1. lépés: Adatok importálása: Importálja a GPS-adatokat
  • 2. lépés: Adatok kiválasztása: Válassza a GoingTo és a DayOfWeek lehetőséget
  • 3. lépés: Adatok szűrése: Csak hazatérés és szerda

Használhatjuk a nehéz utat:

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

Kimenet:

## GoingTo DayOfWeek## 1 Home Wednesday## 2 Home Wednesday## 3 Home Wednesday## 4 Home Wednesday## 5 Home Wednesday## 6 Home Wednesday

Ez nem kényelmes módszer sok művelet végrehajtására, különösen sok lépéssel rendelkező helyzetben. A környezet sok objektumot tárol.

Használjuk inkább a%>% csővezeték operátort. Csak meg kell határoznunk az elején használt adatkeretet, és az egész folyamat lefolyik belőle.

A csővezeték alapvető szintaxisa

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.

Az első csövet a fent felsorolt ​​lépések szerint hozhatja létre.

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

Kimenet:

## [1] TRUE 

Készen állunk egy lenyűgöző adatkészlet létrehozására a csővezeték-üzemeltetővel.

rendezni()

Az előző oktatóanyagban megtudhatja, hogyan rendezheti az értékeket a sort () függvénnyel. A dplyr könyvtárnak rendezési funkciója van. Varázsként működik a csővezetékkel. Az Arrange () ige egy vagy több sort átrendezhet, akár emelkedő (alapértelmezett), akár csökkenő sorban.

- `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 

Rendezhetjük a távolságot rendeltetési hely szerint.

# Sort by destination and distancestep_2_df <-step_1_df %>%arrange(GoingTo, Distance)head

Kimenet:

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

Összegzés

Az alábbi táblázatban összefoglalja az oktatóanyag során megtanult összes műveletet.

Ige Célkitűzés Kód Magyarázat
bepillantás ellenőrizze a df szerkezetét
glimpse(df)
Azonos az str ()
válassza () Válassza ki / zárja ki a változókat
select(df, A, B ,C)
Válassza ki az A, B és C változókat
select(df, A:C)
Válassza ki az összes változót A-tól C-ig
select(df, -C)
C kizárása
szűrő() Szűrje le a df-t egy vagy több feltétel alapján
filter(df, condition1)
Egy feltétel
filter(df, condition1
ondition2)
rendezni() Rendezze az adatkészletet egy vagy több változóval
arrange(A)
Az A változó növekvő fajtája
arrange(A, B)
Az A és B változó növekvő fajtája
arrange(desc(A), B)
Az A változó csökkenő fajtája és a B növekvő fajtája
%>% Hozzon létre egy csővezetéket az egyes lépések között
step 1 %>% step 2 %>% step 3