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: get()을 사용하여 dplyr에서 문자열을 변수 이름으로 전달합니다.

문자열을 dplyr의 filter() 함수에 변수 이름으로 전달하여 데이터 프레임을 필터링하려고 하면 빈 데이터 프레임을 얻게 됩니다.

 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

filter () 함수에서 get() 함수를 사용하면 팀이 A와 동일한 행에 대해서만 데이터 프레임의 행을 성공적으로 필터링할 수 있습니다.

예 2: .data를 사용하여 dplyr에서 문자열을 변수 이름으로 전달합니다.

문자열을 dplyr의 filter() 함수에 변수 이름으로 전달하는 또 다른 방법은 다음과 같이 .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

filter() 함수의 .data 함수를 사용하면 팀이 A와 동일한 행에 대해서만 데이터 프레임의 행을 성공적으로 필터링할 수 있습니다.

추가 리소스

다음 튜토리얼에서는 dplyr에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

dplyr을 사용하여 그룹별로 첫 번째 행을 선택하는 방법
dplyr을 사용하여 여러 조건으로 필터링하는 방법
dplyr을 사용하여 특정 문자열이 포함된 행을 필터링하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다