R Language
누락 값
수색…
소개
변수가 취하는 값을 알지 못하면 그 값은 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
이 접근 방식을 확장하면 데이터 프레임 에서 colSums
및 colSums
를 사용하여 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('.','-'))
비슷하게 NA
는 write.csv
의 na
인수를 사용하여 사용자 정의 문자열로 작성할 수 있습니다. 테이블을 읽고 쓰는 다른 도구 는 비슷한 옵션을 가지고 있습니다.
다른 클래스의 NAs 사용하기
기호 NA
는 logical
누락 값을 나타냅니다.
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')