티스토리 뷰

R Programming

R프로그래밍 언어 데이터 구조(Data Structure)


R에서 데이터 구조는 4가지로 구분됩니다.

  1. 벡터(Vector)
  2. 행렬(Matrix)
  3. 리스트(List)
  4. 데이터프레임(Data.frame)
이번 포스팅은 데이터 프레임 두 번째 시간입니다. 

데이터 프레임의 첫 포스팅은 아래 링크를 참조하시기 바랍니다.


오늘은 데이터 프레임에서 기본적인 결측치 핸들링에 대해서 알아보겠습니다.





01. 결측치(NA)란

NA와 NULL의 구분방법에 대해서는 이전 포스팅에서 설명했습니다. 



변수는 데이터를 담는 상자에 비유할 수 있습니다. 

변수를 상자로 비유했을 때, 다음의 두 경우를 생각해 볼 수 있습니다.

  1. 상자에 데이터가 담겨 있는데 상자가 포장되어 있어서 안에 뭐가 들었는지 모르는 경우
  2. 상자는 있는데 아무 것도 안들어 있는 빈 상자의 경우
우리는 1번을 NA라 부르고, 2번을 NULL이라고 부릅니다. NA는 존재하지만 불확실한 값이고 NULL은 존재하지 않으며 비어있는 값입니다. 



02. 결측치(NA) 제거하기

경우에 따라 NA가 있는 관측치는 제거해야 할 필요가 있습니다.  - NA가 포함된 행 전체

결측치를 제거하는 방법에는 두 가지가 있습니다.


(1) na.omit( )를 사용하는 방법 - NA가 있는 행을 제외하는 함수

(2) complete.cases( )를 사용하는 방법 -NA가 없는 행을 TURE로 반환



다음은 예제 코드입니다.

1
2
3
4
5
6
7
8
9
10
df <- data.frame(x=c(1,2,3,NA,7,8), y=c(5,4,2,2,NA,9))
df
 
# 첫 번째 방법
clean <- na.omit(df)
clean
 
# 두 번째 방법
clean2 <- df[complete.cases(df), ]
clean2


  • complete.cases( ) 함수는 NA가 없는 행을 TRUE로 반환하기 때문에
  • 예시처럼 df[complete.cases(df), ] 라고 입력하면 TRUE인 행만 추출할 수 있습니다.


데이터 분석을 하기 위해 결측치를 처리해야한다면 분석가는 NA값을 제거한 뒤에도 데이터가 충분한 지 확인해야합니다.

또 때로는 데이터에서 관측값을 누락하는 것은 분석 결과가 의미 없어질 수도 있습니다. 분석가 입장에서 NA를 제거해도 되는지 확실히 파악하고 진행할 필요가 있습니다. NA가 있는 행을 다 지워버린다면 NA 떄문에 다른 열(Column)의 유용한 정보가 사라질 수도 있기 때문입니다.


결측치를 보완하는 방법은 제거 뿐만 아니라 통계적 방법을 통해 유사값을 입력할 수도 있기 때문입니다.




데이터 프레임의 두 번째 포스팅을 마칩니다.





댓글