Jak przekazać ciąg znaków jako nazwę zmiennej w dplyr


Aby przekazać ciąg znaków jako nazwę zmiennej w dplyr, możesz użyć jednej z następujących metod:

Metoda 1: Użyj get()

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

Metoda 2: Użyj .data

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

Poniższe przykłady pokazują, jak w praktyce zastosować każdą metodę z następującą ramką danych:

 #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

Przykład 1: Przekaż ciąg znaków jako nazwę zmiennej w dplyr za pomocą get()

Jeśli spróbujemy przefiltrować ramkę danych, przekazując ciąg znaków jako nazwę zmiennej do funkcji filter() w dplyr, otrzymamy pustą ramkę danych:

 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)

Jednym ze sposobów obejścia tego jest zawinięcie nazwy zmiennej w funkcji 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

Korzystając z funkcji get() w funkcji filter() jesteśmy w stanie skutecznie filtrować wiersze ramki danych tylko dla wierszy, w których zespół jest równy A.

Przykład 2: Przekaż ciąg znaków jako nazwę zmiennej w dplyr, używając .data

Innym sposobem przekazania ciągu znaków jako nazwy zmiennej do funkcji filter() w dplyr jest użycie funkcji .data w następujący sposób:

 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

Korzystając z funkcji .data w funkcji filter() jesteśmy w stanie skutecznie filtrować wiersze w ramce danych tylko dla wierszy, w których zespół jest równy A.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w dplyr:

Jak wybrać pierwszy wiersz według grupy za pomocą dplyr
Jak filtrować według wielu warunków za pomocą dplyr
Jak filtrować wiersze zawierające określony ciąg za pomocą dplyr

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *