Как использовать оператор канала в 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 .
  • Затем просуммируйте среднее значение переменной миль на галлон .

Пример 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 .
  • Затем просуммируйте среднее значение переменной миль на галлон и стандартное отклонение переменной л.с.

Пример 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
Как использовать оператор «НЕ В» в R
Как использовать оператор %in% в R

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *