Dplyr을 사용하여 na 라인을 잃지 않고 데이터 프레임을 필터링하는 방법


다음 기본 구문을 사용하면 R의 dplyrTidyr 패키지에 있는 함수를 사용하여 NA 값이 포함된 행을 잃지 않고 데이터 프레임을 필터링할 수 있습니다.

 library (dplyr)
library (tidyr)

#filter for rows where team is not equal to 'A' (and keep rows with NA)
df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))

이 수식은 필터링 중에 데이터 프레임에서 제거되지 않도록 NA 값을 TRUE로 변환하기 위해 Tidyr 패키지의 replacement_na() 함수를 사용합니다.

다음 예에서는 실제로 이 구문을 사용하는 방법을 보여줍니다.

예: dplyr을 사용하여 NA 행을 잃지 않고 데이터 프레임 필터링

다양한 농구 선수에 대한 정보를 포함하는 다음과 같은 데이터 프레임이 R에 있다고 가정합니다.

 #create data frame
df <- data. frame (team=c('A', NA, 'A', 'B', NA, 'C', 'C', 'C'),
                 points=c(18, 13, 19, 14, 24, 21, 20, 28),
                 assists=c(5, 7, 17, 9, 12, 9, 5, 12))

#view data frame
df

  team points assists
1 to 18 5
2 <NA> 13 7
3 A 19 17
4 B 14 9
5 <NA> 24 12
6 C 21 9
7 C 20 5
8 C 28 12

이제 dplyr 패키지의 filter() 함수를 사용하여 열의 값이 A와 같지 않은 행만 포함하도록 데이터 프레임을 필터링한다고 가정합니다.

 library (dplyr)

#filter for rows where team is not equal to 'A'
df <- df %>% filter(team != ' A ')

#view updated data frame
df

  team points assists
1 B 14 9
2 C 21 9
3 C 20 5
4 C 28 12

열의 값이 NA인 행을 포함하여 열의 값이 A인 모든 행이 필터링되었습니다.

팀이 A인 행을 필터링하고 NA 값이 있는 행을 유지하려면 다음 구문을 사용할 수 있습니다.

 library (dplyr)
library (tidyr)

#filter for rows where team is not equal to 'A' (and keep rows with NA)
df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))

#view updated data frame
df

  team points assists
1 <NA> 13 7
2 B 14 9
3 <NA> 24 12
4 C 21 9
5 C 20 5
6 C 28 12

열의 값이 A인 모든 행은 필터링되었지만 열의 값이 NA인 행은 유지했습니다.

참고 : 여기에서 Tidyr replacement_na() 함수에 대한 전체 문서를 찾을 수 있습니다.

추가 리소스

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

dplyr을 사용하여 행 번호로 필터링하는 방법
dplyr을 사용하여 여러 조건으로 필터링하는 방법
dplyr에서 “포함되지 않음” 필터를 사용하는 방법

의견을 추가하다

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