Come passare una stringa come nome di variabile in dplyr


È possibile utilizzare uno dei seguenti metodi per passare una stringa come nome di variabile in dplyr:

Metodo 1: utilizzare get()

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

Metodo 2: utilizzare .data

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

I seguenti esempi mostrano come utilizzare ciascun metodo nella pratica con il seguente frame di dati:

 #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

Esempio 1: passa una stringa come nome di variabile in dplyr utilizzando get()

Se proviamo a filtrare un frame di dati passando una stringa come nome della variabile alla funzione filter() in dplyr, otterremo un frame di dati vuoto:

 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)

Un modo per aggirare questo problema è racchiudere il nome della variabile nella funzione 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

Utilizzando la funzione get() nella funzione filter() , siamo in grado di filtrare con successo le righe del frame di dati solo per le righe in cui la squadra è uguale ad A.

Esempio 2: passare una stringa come nome di variabile in dplyr utilizzando .data

Un altro modo per passare una stringa come nome di variabile alla funzione filter() in dplyr è utilizzare la funzione .data come segue:

 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

Utilizzando la funzione .data nella funzione filter() , siamo in grado di filtrare con successo le righe nel data frame solo per le righe in cui la squadra è uguale ad A.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in dplyr:

Come selezionare la prima riga per gruppo utilizzando dplyr
Come filtrare in base a più condizioni utilizzando dplyr
Come filtrare le righe contenenti una determinata stringa utilizzando dplyr

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *