R Valige (), Filter (), Korrasta (), Pipeline with Example

Lang L: none (table-of-contents):

Anonim

Selles õpetuses saate teada

  • vali ()
  • Filter ()
  • Torujuhe
  • korraldama()

Teek nimega dplyr sisaldab andmekogumis liikumiseks väärtuslikke verbe. Selle õpetuse kaudu saate kasutada reisi aegade andmekogumit. Andmekogum kogub juhi poolt kodu ja töökoha vahel teavet reisijuhtide kohta. Andmekogumis on neliteist muutujat, sealhulgas:

  • DayOfWeek: tuvastage nädalapäev, mida juht kasutab oma autot
  • Kaugus: kogu teekonna pikkus
  • MaxSpeed: reisi maksimaalne kiirus
  • TotalTime: teekonna pikkus minutites

Andmekogumis on andmekogus umbes 200 vaatlust ja sõidud toimusid esmaspäevast reedeni.

Kõigepealt peate:

  • laadige andmekogum
  • kontrollige andmete struktuuri.

Üks käepärane funktsioon dplyriga on funktsioon glimpse (). See on str () võrreldes parem. Andmekogumi struktuuri vaatamiseks ja manipuleerimise vajalikkuse otsustamiseks saame kasutada pilguheit ().

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

Väljund:

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

See on ilmne, et muutuja Comments vajab täiendavat diagnostikat. Muutuja Kommentaaride esimesed tähelepanekud on ainult puuduvad väärtused.

sum(df$Comments =)

Koodi selgitus

  • summa (df $ Kommentaarid == ""): summa vaatlused võrduvad väärtusega "" veeru df kommentaarides

Väljund:

## [1] 181 

vali ()

Alustame verbiga select (). Me ei vaja tingimata kõiki muutujaid ja hea tava on valida ainult need muutujad, mis teile asjakohased on.

Meil on 181 puuduvat vaatlust, peaaegu 90 protsenti andmekogumist. Kui otsustate need välja jätta, ei saa te analüüsi jätkata.

Teine võimalus on visata muutuja Comment koos verbiga select ().

Muutujaid saame valida erineval viisil valiku () abil. Pange tähele, et esimene argument on andmekogum.

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

Muutuja Kommentaarid välistamiseks võite kasutada kolmandat viisi.

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

Väljund:

## [1] 205 14
dim(step_1_df)

Väljund:

## [1] 205 13 

Algsel andmekogul on 14 funktsiooni, samal ajal kui step_1_df-l on 13 funktsiooni.

Filter ()

Filter () aitab hoida vaatlusi kriteeriumide järgi. Filter () töötab täpselt nagu select (), edastate kõigepealt andmeraami ja seejärel komaga eraldatud tingimuse:

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

Üks kriteerium

Kõigepealt saate loendada vaatluste arvu teguri muutuja igal tasemel.

table(step_1_df$GoingTo)

Koodi selgitus

  • tabel (): loendage vaatluste arv taseme järgi. Pange tähele, et aktsepteeritakse ainult teguri taseme muutujat
  • tabel (step_1_df $ GoingTo): lugege lõppsihtkohta suunduvate reiside arv.

Väljund:

#### GSK Home## 105 100

Funktsioonitabel () näitab, et 105 sõitu läheb GSK-sse ja 100 koju.

Andmeid saame filtreerida, et tagastada üks andmekogum 105 vaatluse ja teine ​​100 vaatlusega.

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

Väljund:

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

Väljund:

## [1] 105 14 

Mitu kriteeriumi

Andmekogumit saame filtreerida rohkem kui ühe kriteeriumiga. Näiteks võite välja võtta vaatlused, kus sihtkohaks on kodu ja mis toimus kolmapäeval.

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

Väljund:

## [1] 23 14 

Sellele kriteeriumile vastas 23 tähelepanekut.

Torujuhe

Andmekogumi loomine nõuab palju toiminguid, näiteks:

  • importimine
  • ühendamine
  • valides
  • filtreerimine
  • ja nii edasi

Dplyri teegil on praktiline operaator%>%, mida nimetatakse torujuhtmeks . Torujuhtme funktsioon muudab manipuleerimise puhtaks, kiireks ja vähem vigade tekkimiseks.

See operaator on kood, mis sooritab samme ilma vaheastmeid kõvakettale salvestamata. Kui olete naasnud meie ülaltoodud näite juurde, saate valida huvipakkuvad muutujad ja need filtreerida. Meil on kolm sammu:

  • 1. samm: andmete importimine: GPS-i andmete importimine
  • 2. samm: valige andmed: valige GoingTo ja DayOfWeek
  • 3. samm: andmete filtreerimine: naaske ainult koju ja kolmapäeval

Saame kasutada rasket viisi:

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

Väljund:

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

See ei ole mugav viis paljude toimingute tegemiseks, eriti olukorras, kus on palju samme. Keskkond lõpeb paljude objektide salvestamisega.

Kasutame selle asemel torujuhtme operaatorit%>%. Peame määratlema ainult alguses kasutatud andmeraami ja kogu protsess voolab sellest.

Torujuhtme põhisüntaks

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.

Esimese toru saate luua ülaltoodud sammude järgi.

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

Väljund:

## [1] TRUE 

Oleme valmis looma torujuhtmega operaatoriga uimastamise andmekogumi.

korraldama()

Eelmises õpetuses saate teada, kuidas väärtusi sortida funktsiooni sort () abil. Raamatukogul dplyr on oma sortimisfunktsioon. See töötab torujuhtmega nagu võlu. Verb korraldada () võib järjestada ühe või mitu rida, kas tõusvas (vaikimisi) või kahanevas reas.

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

Saame sortida vahemaad sihtkoha järgi.

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

Väljund:

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

Kokkuvõte

Alljärgnevas tabelis võtate kokku kõik õpetuse käigus õpitud toimingud.

Tegusõna Eesmärk Kood Selgitus
pilguheit kontrollige df struktuuri
glimpse(df)
Stringiga () identne
vali () Valige / välistage muutujad
select(df, A, B ,C)
Valige muutujad A, B ja C
select(df, A:C)
Valige kõik muutujad A-st C-ni
select(df, -C)
Välista C
filter () Filtreerige df ühe või mitme tingimuse põhjal
filter(df, condition1)
Üks tingimus
filter(df, condition1
lisamine2)
korraldama() Sorteeri andmekogum ühe või mitme muutujaga
arrange(A)
Muutuja A kasvav sort
arrange(A, B)
Muutuja A ja B kasvav sort
arrange(desc(A), B)
Muutuja A kahanev sort ja B kasvav sort
%>% Looge iga sammu vahele torujuhe
step 1 %>% step 2 %>% step 3