R 프로그래밍에서 데이터를 다루다 보면 NA, NaN, Inf 같은 특수한 값들이 자주 등장합니다.
이 값들을 올바르게 이해하고 처리하지 않으면 데이터 분석 과정에서 오류가 발생할 수 있습니다.
이번 글에서는 R NA 처리, NaN 차이, Inf 의미와 활용법을 정리했습니다.
목차
1. NA (결측치, Not Available)
2. Inf (무한대, Infinity)
3. NaN (Not a Number, 정의 불가 값)
4. NA 처리 방법
1. NA (결측치, Not Available)
NA는 데이터가 존재하지 않는 결측값을 의미합니다. 원래 데이터가 존재하긴하자 어떤한 방법으로 측정되지 않아 현재 우리가 알 수 없는, 즉 데이터가 없는 것이라고 생각하시면 되겠습니다.
value = c(3, 6, 23, NA, Inf)
value
출력 결과
[1] 3 6 23 NA Inf
NA 확인하기
any(is.na(value)) # NA가 하나라도 있니?
is.na(value) # 각 값이 NA인지 확인
출력 결과
[1] TRUE
[1] FALSE FALSE FALSE TRUE FALSE
이때 주의할 것은 값이 T와 F로 나온다는 것입니다.
2. Inf (무한대, Infinity)
0으로 나누면 Inf (무한대) 값이 발생합니다. 꼭 이러한 상황이 아니라도 극한을 취했을때 무한대가 나오는 상황 역시 inf로 출력이 됩니다.
1/0
-1/0
출력 결과
[1] Inf
[1] -Inf
무한대 여부는 is.infinite()로 확인합니다. 위의 value값에 is.infinite를 입력합니다.
is.infinite(value)
출력 결과
[1] FALSE FALSE FALSE FALSE TRUE
3. NaN (Not a Number, 정의 불가 값)
수학적으로 정의되지 않는 값은 NaN이 됩니다. 데이터가 결측된 Na과는 다릅니다.
log(-1)
0/0
출력 결과
[1] NaN
[1] NaN
4. NA 처리 방법
1) 합계에서 NA 제거하기
x = c(1, 2, 3, NA, 5, 6)
sum(x)
sum(x, na.rm = T)
출력 결과
[1] NA
[1] 17
👉 na.rm = TRUE 옵션을 사용하면 NA 무시하고 합계를 구할 수 있습니다.
2) NA 개수 세기
z = c(1, 2, 3, NA, 5, NA)
sum(is.na(z))
출력 결과
[1] 2
is.na는 T/F로 나옵니다 T=1, F=0으로 계산 되기때문에 T계수는 세는 것과 동일합니다.
3) NA를 특정 값으로 대체하기
z[is.na(z)] = 0
z
출력 결과
[1] 1 2 3 0 5 0
z에서 na인 인덱스를 0으로 교체하는 과정입니다..
4) NA 제거하기
x
as.vector(na.omit(x))
출력 결과
[1] 1 2 3 NA 5 6
[1] 1 2 3 5 6
na.omit를 이용하여 na자체를 없앨수도 있습니다.
5) NA 가 있는 경우의 합
벡터에 NA가 들어 있으면, 그대로 합계를 구할 때 결과가 NA로 나옵니다.
x = c(1, 2, 3, NA, 5, 6)
sum(x)
출력 결과
[1] NA
이유: NA가 하나라도 포함되어 있으면, 합계도 NA가 되어버립니다. 따라서 이를 제거해야합니다.
6) NA 제거 후 합계 계산하기
이럴 때는 sum() 함수에서 na.rm = TRUE 옵션을 사용합니다.
na.rm은 NA 값을 제거(remove) 하겠다는 뜻입니다.
sum(x, na.rm = TRUE)
출력 결과
[1] 17
즉, 1 + 2 + 3 + 5 + 6 = 17 이 계산된 것입니다.
R NA, NaN, Inf 차이 정리
구분 의미 예시 확인 함수
| NA | 결측값 | c(1, NA, 3) | is.na() |
| Inf | 무한대 | 1/0, -1/0 | is.infinite() |
| NaN | 정의 불가 | 0/0, log(-1) | is.nan() |

'코딩' 카테고리의 다른 글
| [R 프로그래밍 기초] | 5-2. R 그래프 꾸미기 옵션 정리 (type, pch, lty, col) (0) | 2025.09.17 |
|---|---|
| [R 프로그래밍 기초] | 5. R 그래프 그리기 완벽 정리 (막대그래프, 원그래프, 히스토그램, 상자그림, 산점도) (0) | 2025.09.17 |
| [R 프로그래밍 기초] | 3 .R 자료구조와 벡터인덱싱 완전정리 (벡터, 행렬, 데이터프레임, 팩터, 날짜 / class vs mode 차이) (0) | 2025.09.16 |
| [R 프로그래밍 기초] | 2. R 데이터 타입 완벽 정리 + mode, class, typeof까지 (0) | 2025.09.15 |
| [R 프로그래밍 기초] | 1. 꼭 알아야 할 기본 연산 6가지 정리 (2) | 2025.09.14 |