Р Изаберите (), филтрирајте (), распоредите (), цевовод са примером

Преглед садржаја:

Anonim

У овом упутству ћете научити

  • изаберите ()
  • Филтер ()
  • Цевовод
  • уредити()

Библиотека под називом дплир садржи драгоцене глаголе за кретање унутар скупа података. Кроз ово упутство користићете скуп података „Времена путовања“. Скуп података прикупља информације о путовању које возач води од куће до радног места. У скупу података постоји четрнаест променљивих, укључујући:

  • ДаиОфВеек: Утврдите дан у недељи у којој возач користи свој аутомобил
  • Удаљеност: Укупна удаљеност путовања
  • МакСпеед: Максимална брзина путовања
  • ТоталТиме: Дужина путовања у минутима

Скуп података садржи око 200 запажања, а вожње су се одвијале између понедељка и петка.

Пре свега, потребно је да:

  • учитати скуп података
  • проверити структуру података.

Једна корисна карактеристика дплир-а је функција глимпсе (). Ово је побољшање у односу на стр (). Можемо користити глимпсе () да бисмо видели структуру скупа података и одлучили која је манипулација потребна.

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

Излаз:

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

Очигледно је да променљивој Коментари треба додатна дијагностика. Првим запажањима променљиве Коментари недостају само вредности.

sum(df$Comments =)

Објашњење кода

  • збир (дф $ Коментари == ""): Збир запажања једнак је "" у коментарима колоне из дф

Излаз:

## [1] 181 

изаберите ()

Започећемо са глаголом селецт (). Не требају нам све променљиве, а добра пракса је да одаберемо само оне променљиве које сматрате релевантним.

Недостаје нам 181 запажање, готово 90 посто скупа података. Ако одлучите да их изузмете, нећете моћи да наставите даље са анализом.

Друга могућност је испуштање променљиве Цоммент уз глагол селецт ().

Варијабле можемо одабрати на различите начине помоћу селецт (). Имајте на уму да је први аргумент скуп података.

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

Можете користити трећи начин да изузмете променљиву Коментари.

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

Излаз:

## [1] 205 14
dim(step_1_df)

Излаз:

## [1] 205 13 

Оригинални скуп података има 14 карактеристика, док степ_1_дф има 13.

Филтер ()

Глагол филтер () помаже да запажања буду у складу са критеријумима. Филтер () ради тачно као селецт (), прво прослеђујете оквир података, а затим услов одвојен зарезом:

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

Један критеријум

Пре свега, можете да избројите број запажања унутар сваког нивоа променљиве фактора.

table(step_1_df$GoingTo)

Објашњење кода

  • табела (): Броји број посматрања према нивоу. Напомена, прихваћене су само променљиве нивоа фактора
  • табела (корак_1_дф $ ГоингТо): Пребројите број путовања до крајњег одредишта.

Излаз:

#### GSK Home## 105 100

Функционална табела () показује да 105 вожњи иде до ГСК и 100 до куће.

Податке можемо филтрирати да бисмо вратили један скуп података са 105 посматрања, а други са 100 запажања.

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

Излаз:

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

Излаз:

## [1] 105 14 

Више критеријума

Скуп података можемо филтрирати са више од једног критеријума. На пример, можете да извучете запажања тамо где је одредиште Кућа, а које је било у среду.

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

Излаз:

## [1] 23 14 

23 запажања се подударају са овим критеријумом.

Цевовод

Стварање скупа података захтева пуно операција, као што су:

  • увоз
  • спајање
  • одабирући
  • филтрирање
  • и тако даље

Библиотека дплир долази са практичним оператором,%>%, који се назива цевовод . Функција цевовода чини манипулацију чистом, брзом и мање брзом за грешку.

Овај оператер је код који изводи кораке без спремања међукорака на чврсти диск. Ако сте се вратили нашем примеру одозго, можете одабрати променљиве од интереса и филтрирати их. Имамо три корака:

  • Корак 1: Увоз података: Увоз гпс података
  • Корак 2: Избор података: Изаберите ГоингТо и ДаиОфВеек
  • Корак 3: Филтрирање података: Повратак само кући и среда

Можемо се послужити тежим начином:

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

Излаз:

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

То није прикладан начин за извођење многих операција, посебно у ситуацији са пуно корака. Околина завршава са пуно ускладиштених предмета.

Уместо тога употребимо оператор цевовода%>%. Потребно је само да дефинишемо оквир података који се користи на почетку и из њега ће потећи сав процес.

Основна синтакса цевовода

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.

Можете направити своју прву цев пратећи горе наведене кораке.

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

Излаз:

## [1] TRUE 

Спремни смо да створимо запањујући скуп података са оператором цевовода.

уредити()

У претходном упутству ћете научити како сортирати вредности помоћу функције сорт (). Библиотека дплир има своју функцију сортирања. То делује као шарм са цевоводом. Глагол аранжман () може преуређивати један или више редова, узлазно (подразумевано) или силазно.

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

Удаљеност можемо сортирати по одредишту.

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

Излаз:

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

Резиме

У доњој табели резимирате све радње које сте научили током лекције.

Глагол објективан Код Објашњење
поглед проверити структуру дф
glimpse(df)
Идентично са стр ()
изаберите () Изаберите / изузмите променљиве
select(df, A, B ,C)
Изаберите променљиве А, Б и Ц.
select(df, A:C)
Изаберите све променљиве од А до Ц.
select(df, -C)
Изузети Ц.
филтер () Филтрирајте дф на основу једног или више услова
filter(df, condition1)
Један услов
filter(df, condition1
ондитион2)
уредити() Сортирајте скуп података са једном или више променљивих
arrange(A)
Растућа врста променљиве А.
arrange(A, B)
Растућа врста променљивих А и Б.
arrange(desc(A), B)
Силазна варијабла А и растућа врста Б.
%>% Израдите цевовод између сваког корака
step 1 %>% step 2 %>% step 3