본문 바로가기

이것저것들

[R언어] NA, NaN, NULL 정의 차이

ADsP 자격증 공부하면서 R언어를 처음 접하게 되었다.

R언어의 데이터 타입을 보면서 NA, NaN, NULL에 대한 정의가 애매모호해서 나름 이해한 내용을 정리해 본다.

 

일반적으로 프로그래밍 언어에서는 값이 없거나 비어 있다는 표현NULL 라는 용어로 표현한다.

 

그리고 값들의 수식 연산 결과값이 데이터타입에 맞지 않거나 결과값에 오류가 있을 경우 NaN (not a number)로 표현한다.

 

그래서 NULL, NaN 이 두 가지 데이터타입 표현은 이해하기 쉬웠다.

 

하지만 NA 데이터타입은 생소했다.

 

NA (not available) : 사용할 수 없는 값?

 

위키백과 : "결측자료(missing data), 손실자료(損失資料)는 어떠한 자료값도 관측 대상 변수에 저장되지 않을 때 발생한다."

 

다른 정의한 글들을 찾아보면 "값은 있지만 알 수 없다? 혹은 없는 값이다 null이랑 혼용된다?, 결측치 값이다"

 

책마다 설명하는 기준이 다르고 블로그 글들도 정의하는 표현들이 다르기도 하고, 통계쪽 용어를 잘 모르다 보니

"결측치" 이라는 표현이 이해가지 않았다.

 

값이 있으면 있는 거고, 없으면 없는 것이지, 존재는 하는데 없는 값이다?

NULL로 표현하면 끝 아닌가? 왜 NA 로 공백데이터를 표현하지?

데이터 셋 프레임을 짜는 예시를 보면 생각보다 NA로 NULL 값을 표현하는 예시가 많네?

 

그렇게 열심히 정의를 이해하려고 결측값을 설명하는 예시들을 보다 설문조사의 예를 보고 대략적으로 이해했다.

 

예) 성별로 몸무게, 키를 조사하는 설문조사가 있다고 치자.

 

일반적으로 성별로 몸무게, 키를 적어주겠지만 간혹 여성들 중에 몸무게 수치를 민감하게 생각하여 몸무게를 적지 않고 설문조사를 했다고 치자.

 

그러면 키는 적었는데 몸무게가 누락된 이 데이터를 버릴 것인가?

 

데이터 분석하는 입장에서는 이런 데이터 아까운 손실 데이터이기 때문에 NA라는 특정할 수 없는 값 또는 존재는 하겠지만 알 수 없는 불확실한 값으로 치부하고 분석 데이터로 집어 넣는 것 같다.

 

[결론]

NULL  비어 있는 값, 존재하지 않는 것
NaN (Not a Number) 수식 연산 중에 발생하는 오류의 값
NA (not available) ● 존재할 것이라고 예상되는 값이지만 어떠한 이유를 누락된 값

● 통계에서는 이런 값도 넣고 분석을 하기 원하기에 데이터 활용할 목적으로 특정 불확실한 값으로 치부함

 

물론 본인이 이제 막 데이터에 대해 공부 중이고, 잘못 정의하는 내용일 수도 있지만 대략적으로 정의를 이해하고 접근할 겸 적어본다. (잘못된 정의이면 태클 걸어주세요.)

 

프로그래밍하면서 "있다 없다", "기다 아니다", "맞다 틀리다", "1 아니면 0" 등 이분법적으로 생각하기 쉬운데 애매모호한 정의를 접하면서 생각의 전환을 할 수 있는 시간이었다.