반응형
결측치(NA) 처리
R 프로그래밍에서 결측치(missing value)는 NA(Not Available)라는 문자로 처리됩니다. 또한, NaN(Not a Number)은 분모를 0으로 나누는 것과 같이 계산이 불가능한 경우 출력되는 문자입니다. 이 글에서는 NA를 처리하는 방법과 결측치가 포함된 데이터에 대한 연산 방법을 알아보겠습니다.
1. 결측치의 기본 이해
R에서 결측치는 NA로 표시됩니다. 예를 들어, 다음과 같은 벡터 y가 있을 때:
y <- c(1, 2, 3, NA)
is.na() 함수는 벡터에 결측치가 존재하는 경우 TRUE를 반환합니다.
is.na(y)
# [1] FALSE FALSE FALSE TRUE
결측치가 포함된 벡터 y에 대해 요약 통계를 구하면 다음과 같이 결과에 NA's 항목이 포함됩니다.
summary(y)
# Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
# 1.0 1.5 2.0 2.0 2.5 3.0 1
2. 특정 값을 결측치로 변환하기
특정 값을 NA로 변환할 수 있습니다. 예를 들어, 다음의 벡터 ages에서 -999 값을 NA로 변경해보겠습니다.
ages <- c(48, 78, 56, 88, -999, 13, 26, -999)
ages[ages == -999] <- NA
변경된 벡터는 다음과 같습니다.
print(ages)
# [1] 48 78 56 88 NA 13 26 NA
3. 결측치가 포함된 데이터의 연산
결측치가 포함된 데이터를 연산하게 되면 결과는 NA가 됩니다. 예를 들어, 다음과 같이 sum 및 mean 함수를 적용하면 NA가 반환됩니다.
sum(ages)
# [1] NA
mean(ages)
# [1] NA
하지만, na.rm = TRUE 매개변수를 사용하여 결측치를 제외하고 연산할 수 있습니다.
sum(ages, na.rm = TRUE)
# [1] 309
mean(ages, na.rm = TRUE)
# [1] 51.5
4. 결측치를 포함한 데이터프레임 처리
결측치가 있는 행을 삭제하거나, 결측치가 없는 데이터만 필터링할 수 있습니다. 예제로 다음과 같은 patients 데이터프레임이 있다고 가정합니다.
weight <- c(65.4, 55, 380, 72.2, 51, NA)
height <- c(170, 155, NA, 173, 161, 166)
gender <- c("M", "F", "M", "M", "F", "F")
testDate <- c("2013/09/01", "2013/09/01", "2013/09/05", "2013/09/14", "2013/10/11", "2013/10/26")
patients <- data.frame(weight = weight, height = height, gender = gender, testDate = testDate)
이 데이터프레임에서 결측치가 있는 행을 제외하고 나머지 데이터를 출력하려면 na.omit() 함수를 사용합니다.
na.omit(patients)
또한, complete.cases() 함수는 결측치가 없는 행에 대해 TRUE를 반환하며, 이를 통해 필터링할 수 있습니다.
patients[complete.cases(patients),]
5. 결측치를 제외한 연산
patients 데이터프레임에서 weight와 height 열만 가져와 연산하는 예제입니다.
patients.sub <- patients[, c("weight", "height")]
apply(patients.sub, 2, mean, na.rm = TRUE)
6. 날짜 데이터 처리
patients 데이터프레임의 testDate 열을 실제 날짜 형식으로 변환하고 날짜 간의 차이를 계산할 수 있습니다.
patients$testDate <- as.Date(testDate)
patients$testDate[5] - patients$testDate[1]
# Time difference of 40 days
as.numeric()을 사용해 날짜 차이를 일 수로 변환할 수도 있습니다.
as.numeric(patients$testDate[5] - patients$testDate[1])
# [1] 40
마무리
이번 포스팅에서는 R 프로그래밍에서 결측치(NA)를 처리하고, 이를 연산에서 제외하는 방법을 다루었습니다.
결측치는 데이터 분석 과정에서 흔히 접하게 되는 문제이며, 이를 적절히 처리하는 것이 정확한 분석 결과를 얻는 데 중요합니다.
이 글이 여러분의 R 프로그래밍에 도움이 되기를 바랍니다.
반응형
'AI & Computer Science' 카테고리의 다른 글
통계적 이상치 탐지: R을 활용한 단계별 가이드 (1) | 2024.09.01 |
---|---|
DICOM (DCM) 이미지를 PNG, JPG로 변환하기 (3) | 2024.09.01 |
DeLong’s Test를 활용한 AUC 비교: Python 구현 가이드 (11) | 2024.08.30 |
2-Fold Macro-Average 시각화: R을 활용한 파워포인트 Meta 형식 그래프 추출 가이드 (9) | 2024.08.30 |
AI 모델 성능 평가를 위한 R 코드: 신뢰 구간(CI) 계산 가이드(파이썬) (4) | 2024.08.30 |