Як використовувати оператор труби в r (з прикладами)


Ви можете використовувати оператор конвеєра ( %>% ) у R, щоб «конвелювати» послідовність операцій разом.

Цей оператор найчастіше використовується з пакетом dplyr у R для виконання послідовності операцій над кадром даних.

Основний синтаксис оператора каналу:

 df %>% 
  do_this_operation %>% 
  then_do_this_operation %>%
  then_do_this_operation ...

Оператор труби просто передає результати однієї операції наступній операції під ним.

Перевага використання оператора каналу полягає в тому, що він робить код надзвичайно легким для читання.

У наступних прикладах показано, як використовувати оператор труби в різних сценаріях із набором даних mtcars , вбудованим у R.

 #view first six rows of mtcars dataset
head(mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1

Приклад 1: використання оператора каналу для підсумовування змінної

У наступному коді показано, як використовувати оператор конвеєра ( %>% ) для групування за змінною cyl і підсумовування середнього значення змінної mpg :

 library (dplyr)

#summarize mean mpg grouped by cyl
mtcars %>% 
  group_by(cyl) %>% 
  summarize(mean_mpg = mean(mpg))

# A tibble: 3 x 2
    cyl mean_mpg
      
1 4 26.7
2 6 19.7
3 8 15.1

З результату ми бачимо:

  • Середнє значення милі на галон для автомобілів із значенням 4 циліндрів становить 26,7 .
  • Середнє значення милі на галон для автомобілів із значенням 6 циліндрів становить 19,7 .
  • Середнє значення милі на галон для автомобілів із значенням 8 циліндрів становить 15,1 .

Зверніть увагу на те, що оператор каналу також полегшує інтерпретацію коду.

По суті, він каже:

  • Візьміть кадр даних mtcars .
  • Згрупуйте його за змінною cyl .
  • Потім підсумуйте середнє значення змінної mpg .

Приклад 2: використання оператора каналу для групування та підсумовування кількох змінних

Наступний код показує, як використовувати оператор каналу ( %>% ) для групування за змінними cyl і am , а потім підсумовувати середнє значення змінної mpg і стандартне відхилення змінної hp :

 library (dplyr)

#summarize mean mpg and standard dev of hp grouped by cyl and am
mtcars %>% 
  group_by(cyl, am) %>% 
  summarize(mean_mpg = mean(mpg),
            sd_hp = sd(hp))

# A tibble: 6 x 4
# Groups: cyl[3]
    cyl am mean_mpg sd_hp
        
1 4 0 22.9 19.7 
2 4 1 28.1 22.7 
3 6 0 19.1 9.18
4 6 1 20.6 37.5 
5 8 0 15.0 33.4 
6 8 1 15.4 50.2 

З результату ми бачимо:

  • Для автомобілів із значенням циліндрів 4 і значенням am 0 середнє значення милі на галон становить 22,9 , а стандартне відхилення значення к.с. — 19,7 .
  • Для автомобілів із значенням циліндрів 4 і значенням am 1 середнє значення миль на галон становить 28,1 , а стандартне відхилення значення к.с. — 22,7 .

І так далі.

Знову ж таки, зауважте, що оператор каналу також полегшує інтерпретацію коду.

По суті, він каже:

  • Візьміть кадр даних mtcars .
  • Згрупуйте його за змінними cyl і am .
  • Потім підсумуйте середнє значення змінної mpg і стандартне відхилення змінної hp .

Приклад 3: використання оператора каналу для створення нових змінних

Наступний код показує, як використовувати оператор каналу ( %>% ) із функцією mutate у пакеті dplyr для створення двох нових змінних у кадрі даних mtcars:

 library (dplyr)

#add two new variables in mtcars
new_mtcars <- mtcars %>%
                mutate(mpg2 = mpg*2,
                       mpg_root = sqrt(mpg))

#view first six rows of new data frame
head(new_mtcars)

   mpg cyl disp hp drat wt qsec vs am gear carb mpg2 mpg_root
1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 42.0 4.582576
2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 42.0 4.582576
3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 45.6 4.774935
4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 42.8 4.626013
5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 37.4 4.324350
6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 36.2 4.254409

З результату ми бачимо:

  • Новий стовпець mpg2 містить значення зі стовпця mpg2 , помножені на 2.
  • Новий стовпець mpg_root містить квадратний корінь зі значень у стовпці mpg .

Знову ж таки, зауважте, що оператор каналу також полегшує інтерпретацію коду.

По суті, він каже:

  • Візьміть кадр даних mtcars .
  • Створіть новий стовпець під назвою mpg2 і новий стовпець під назвою mpg_root .

Пов’язане: як використовувати функцію transmute() у dplyr

Додаткові ресурси

У наступних посібниках пояснюється, як використовувати інші поширені функції в R:

Як використовувати оператор тильди (~) у R
Як використовувати оператор знака долара ($) у R
Як використовувати оператор «NOT IN» у R
Як використовувати оператор %in% у R

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *