Як передати рядок як ім’я змінної в dplyr


Ви можете використати один із наведених нижче методів, щоб передати рядок як ім’я змінної в dplyr:

Спосіб 1: Використовуйте get()

 df %>% filter(get(my_var) == ' A ')

Спосіб 2. Використовуйте .data

 df %>% filter(. data [[my_var]] == ' A ')

У наведених нижче прикладах показано, як використовувати кожен метод на практиці з таким кадром даних:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34),
                 rebounds=c(30, 28, 24, 24, 28))

#view data frame
df

  team points assists rebounds
1 A 99 33 30
2 A 90 28 28
3 A 86 31 24
4 B 88 39 24
5 B 95 34 28

Приклад 1: передача рядка як імені змінної в dplyr за допомогою get()

Якщо ми спробуємо відфільтрувати кадр даних, передавши рядок як ім’я змінної функції filter() у dplyr, ми отримаємо порожній кадр даних:

 library (dplyr)

#define variable
my_var <- ' team '

#attempt to filter for rows where team is equal to a variable
df %>% filter(my_var == ' A ')

[1] team points assists rebounds
<0 rows> (or 0-length row.names)

Один із способів обійти це — обернути назву змінної у функцію get() :

 library (dplyr)

#define variable
my_var <- ' team '

#filter for rows where team is equal to a variable
df %>% filter(get(my_var) == ' A ')

  team points assists rebounds
1 A 99 33 30
2 A 90 28 28
3 A 86 31 24

Використовуючи функцію get() у функції filter() , ми можемо успішно фільтрувати рядки кадру даних лише для рядків, де команда дорівнює A.

Приклад 2: передача рядка як імені змінної в dplyr за допомогою .data

Ще один спосіб передати рядок як ім’я змінної функції filter() у dplyr — це використати функцію .data наступним чином:

 library (dplyr)

#define variable
my_var <- ' team '

#filter for rows where team is equal to a variable
df %>% filter(. data [[my_var]] == ' A ')

  team points assists rebounds
1 A 99 33 30
2 A 90 28 28
3 A 86 31 24

Використовуючи функцію .data у функції filter() , ми можемо успішно фільтрувати рядки у фреймі даних лише для рядків, де команда дорівнює A.

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

У наступних посібниках пояснюється, як виконувати інші типові завдання в dplyr:

Як вибрати перший рядок групою за допомогою dplyr
Як фільтрувати за кількома умовами за допомогою dplyr
Як фільтрувати рядки, що містять певний рядок, за допомогою dplyr

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

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