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

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

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