수색…


소개

변수가 취하는 값을 알지 못하면 그 값은 NA 표시됩니다.

비고

누락 된 값은 기호 NA (사용할 수 NA )로 표시됩니다. 불가능한 값 (예 : sqrt(-1) 의 결과)은 기호 NaN (숫자가 아님)로 표시됩니다.

누락 된 데이터 검사

anyNA 는 누락 된 값이 있는지보고합니다. is.na 는 누락 된 값을 요소별로보고합니다.

vec <- c(1, 2, 3, NA, 5)

anyNA(vec)
# [1] TRUE
is.na(vec)
# [1] FALSE FALSE FALSE  TRUE FALSE

ìs.na 는 산술 연산에서 정수 값으로 강제 변환되는 논리 벡터를 반환합니다 (FALSE = 0, TRUE = 1). 이 값을 사용하여 누락 된 값의 수를 확인할 수 있습니다.

sum(is.na(vec))
# [1] 1

이 접근 방식을 확장하면 데이터 프레임 에서 colSumscolSums 를 사용하여 colSums is.na 를 계산할 수 있습니다.

colSums(is.na(airquality))
#   Ozone Solar.R    Wind    Temp   Month     Day 
#      37       7       0       0       0       0 

naniar 패키지 (현재 github에는 있지만 CRAN에는 없음)는 누락 된 값을 탐색 할 수있는 추가 도구를 제공합니다.

NA 값으로 데이터 읽기 및 쓰기

read.* 함수를 사용하여 테이블 형식 데이터 세트를 read.* 때 R은 "NA" 처럼 보이는 누락 된 값을 자동으로 찾습니다. 그러나 누락 된 값이 항상 NA 표시되는 것은 아닙니다. 때때로 점 ( . ), 하이픈 ( - ) 또는 문자 값 (예 : empty )은 값이 NA 임을 나타냅니다. read.* 함수의 na.strings 매개 변수는 R에 어떤 기호 / 문자를 NA 값으로 처리 na.strings 알리는 데 사용할 수 있습니다.

read.csv("name_of_csv_file.csv", na.strings = "-")

또한 하나 이상의 심볼을 NA 로 읽어야한다는 것을 나타내는 것도 가능합니다.

read.csv('missing.csv', na.strings = c('.','-'))

비슷하게 NAwrite.csvna 인수를 사용하여 사용자 정의 문자열로 작성할 수 있습니다. 테이블을 읽고 쓰는 다른 도구 는 비슷한 옵션을 가지고 있습니다.

다른 클래스의 NAs 사용하기

기호 NAlogical 누락 값을 나타냅니다.

class(NA)
#[1] "logical"

이는 다른 원자 벡터 유형으로 쉽게 강제 변환 될 수 있기 때문에 편리하며 일반적으로 필요한 유일한 NA 입니다.

x <- c(1, NA, 1)
class(x[2])
#[1] "numeric"

다른 유형의 단일 NA 값이 필요한 경우 NA_character_ , NA_integer_ , NA_real_ 또는 NA_complex_ . 고급 클래스의 값이 누락 된 경우 일반적으로 NA_integer_ 하여 NA_integer_ 집합이 작동합니다. 예를 들어 누락 된 값을 가져 오는 날짜 Date :

class(Sys.Date()[NA_integer_])
# [1] "Date"

TRUE / FALSE 및 / 또는 NA

NA 논리 형태와 함께 논리 연산자 NA 반환 NA 결과가 모호한 경우. 다음, NA OR TRUE 평가 TRUE 적어도 한쪽으로 평가하기 때문에 TRUE 그러나 NA OR FALSE 반환 NA 우리가 여부를 알 수 없기 때문에 NA 되었을 것이다 TRUE 또는 FALSE

NA | TRUE
# [1] TRUE  
# TRUE | TRUE is TRUE and FALSE | TRUE is also TRUE.

NA | FALSE
# [1] NA  
# TRUE | FALSE is TRUE but FALSE | FALSE is FALSE.

NA & TRUE
# [1] NA  
# TRUE & TRUE is TRUE but FALSE & TRUE is FALSE.

NA & FALSE
# [1] FALSE
# TRUE & FALSE is FALSE and FALSE & FALSE is also FALSE.

이러한 특성은 NA 가 포함 된 일부 열을 기반으로 데이터 세트의 서브 세트를 작성하려는 경우에 유용합니다.

df <- data.frame(v1=0:9, 
                 v2=c(rep(1:2, each=4), NA, NA), 
                 v3=c(NA, letters[2:10]))

df[df$v2 == 1 & !is.na(df$v2), ]
#  v1 v2   v3
#1  0  1 <NA>
#2  1  1    b
#3  2  1    c
#4  3  1    d

df[df$v2 == 1, ]
     v1 v2   v3
#1     0  1 <NA>
#2     1  1    b
#3     2  1    c
#4     3  1    d
#NA   NA NA <NA>
#NA.1 NA NA <NA>

누락 된 값 생략 또는 대체

누락 된 값 레코딩

정기적으로 누락 된 데이터는 데이터 세트에서 NA 로 코딩되지 않습니다. 예를 들어 SPSS에서 누락 된 값은 종종 값 99 표시됩니다.

num.vec <- c(1, 2, 3, 99, 5)
num.vec
## [1]  1  2  3 99  5

하위 집합을 사용하여 직접 NA를 할당하는 것이 가능합니다.

num.vec[num.vec == 99] <- NA

그러나 선호하는 방법은 is.na<- 를 아래와 같이 사용하는 것입니다. 도움말 파일 ( ?is.na )은 다음과 같이 설명합니다.

is.na<- 누락 확률을 높이는 더 안전한 방법을 제공 할 수 있습니다. 예를 들어 요인에 따라 다르게 작동합니다.

is.na(num.vec) <- num.vec == 99

두 메소드 모두 리턴

num.vec
## [1]  1  2  3 NA  5

누락 된 값 제거

누락 된 값은 여러 가지 방법으로 벡터에서 제거 할 수 있습니다.

num.vec[!is.na(num.vec)]
num.vec[complete.cases(num.vec)]
na.omit(num.vec)
## [1] 1 2 3 5

계산에서 누락 값 제외

누락 된 값이있는 벡터에서 산술 기능을 사용하면 누락 된 값이 반환됩니다.

mean(num.vec) # returns: [1] NA

na.rm 매개 변수는 NA 값을 계산에서 제외하도록 함수에 지시합니다.

mean(num.vec, na.rm = TRUE) # returns: [1] 2.75

# an alternative to using 'na.rm = TRUE':
mean(num.vec[!is.na(num.vec)]) # returns: [1] 2.75

lm 과 같은 일부 R 함수에는 na.action 매개 변수가 있습니다. 이것의 기본값은 na.omit 이지만 options(na.action = 'na.exclude') 하면 R의 기본 동작을 변경할 수 있습니다.

기본 동작을 변경할 필요가 없지만 특정 상황에서 다른 na.action 이 필요하면 na.action 매개 변수를 함수 호출에 포함해야합니다. 예 :

 lm(y2 ~ y1, data = anscombe, na.action = 'na.exclude')


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow