Hoe een string als variabelenaam door te geven in dplyr


U kunt een van de volgende methoden gebruiken om een tekenreeks als variabelenaam door te geven in dplyr:

Methode 1: Gebruik get()

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

Methode 2: Gebruik .data

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

De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met het volgende dataframe:

 #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

Voorbeeld 1: Geef een string door als variabelenaam in dplyr met behulp van get()

Als we proberen een dataframe te filteren door een string als variabelenaam door te geven aan de functie filter() in dplyr, krijgen we een leeg dataframe:

 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)

Eén manier om dit te omzeilen is door de naam van de variabele in de functie get() te plaatsen:

 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

Met behulp van de functie get() in de functie filter() kunnen we de rijen van het dataframe alleen succesvol filteren op rijen waarin het team gelijk is aan A.

Voorbeeld 2: Geef een string door als variabelenaam in dplyr met behulp van .data

Een andere manier om een string als variabelenaam door te geven aan de functie filter() in dplyr is door de functie .data als volgt te gebruiken:

 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

Met behulp van de functie .data in de functie filter() kunnen we de rijen in het dataframe alleen succesvol filteren voor rijen waarin het team gelijk is aan A.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in dplyr uitvoert:

Hoe u de eerste rij per groep selecteert met dplyr
Hoe u op meerdere voorwaarden kunt filteren met behulp van dplyr
Hoe u rijen kunt filteren die een bepaalde tekenreeks bevatten met behulp van dplyr

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert