Como passar uma string como nome de variável no dplyr


Você pode usar um dos seguintes métodos para passar uma string como nome de variável em dplyr:

Método 1: use get()

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

Método 2: use .data

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

Os exemplos a seguir mostram como usar cada método na prática com o seguinte quadro de dados:

 #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

Exemplo 1: Passe uma string como nome de variável em dplyr usando get()

Se tentarmos filtrar um quadro de dados passando uma string como nome de variável para a função filter() em dplyr, obteremos um quadro de dados vazio:

 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)

Uma maneira de contornar isso é agrupar o nome da variável na função 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

Usando a função get() na função filter() , podemos filtrar com sucesso as linhas do quadro de dados apenas para linhas onde a equipe é igual a A.

Exemplo 2: Passe uma string como nome de variável em dplyr usando .data

Outra maneira de passar uma string como nome de variável para a função filter() em dplyr é usar a função .data da seguinte forma:

 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

Usando a função .data na função filter() , podemos filtrar com sucesso as linhas no quadro de dados apenas para linhas onde a equipe é igual a A.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns no dplyr:

Como selecionar a primeira linha por grupo usando dplyr
Como filtrar por múltiplas condições usando dplyr
Como filtrar linhas contendo uma determinada string usando dplyr

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *