R 공백 행 제거 - R gongbaeg haeng jegeo

데이터 분석에서 결측치를 처리하는 것은 매우 중요하며, R에서 결측치는 NA로 표시됩니다.

결측치 테스트

is.na() 함수를 통해 결측치 여부를 확인할 수 있습니다.

x = c(1:4, NA, 6:7, NA)
x

## [1]  1  2  3  4 NA  6  7 NA
## [1] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE

NA의 경우 TRUE, 그렇지 않을 경우 FALSE를 반환합니다.

df = data.frame (col1 = c (1:3, NA),
                 col2 = c ("this", NA,"is", "text"),
                 col3 = c (TRUE, FALSE, TRUE, TRUE),
                 col4 = c (2.5, 4.2, 3.2, NA),
                 stringsAsFactors = FALSE)

df

##   col1 col2  col3 col4
## 1    1 this  TRUE  2.5
## 2    2 <NA> FALSE  4.2
## 3    3   is  TRUE  3.2
## 4   NA text  TRUE   NA
##       col1  col2  col3  col4
## [1,] FALSE FALSE FALSE FALSE
## [2,] FALSE  TRUE FALSE FALSE
## [3,] FALSE FALSE FALSE FALSE
## [4,]  TRUE FALSE FALSE  TRUE
## [1]  4  6 16

데이터프레임 역시 is.na() 함수를 적용할 수 있으며, which() 함수를 통해 NA 데이터의 위치를 찾을 수도 있습니다.

결측치 제거

평균값 대체

## [1]  1  3 NA  4
## [1] NA

데이터에 결측치가 존재하면, 일반적인 연산함수의 결과로 NA를 반환합니다.

## [1] 2.667

na.rm = TRUE를 추가해주면, NA 데이터를 제외한 나머지 데이터를 대상으로 연산을 합니다.

데이터 제거

결측치가 있는 데이터를 삭제해 주는 경우도 있습니다.

df = data.frame (col1 = c (1:3, NA),
                 col2 = c ("this", NA,"is", "text"),
                 col3 = c (TRUE, FALSE, TRUE, TRUE),
                 col4 = c (2.5, 4.2, 3.2, NA),
                 stringsAsFactors = FALSE)

df

##   col1 col2  col3 col4
## 1    1 this  TRUE  2.5
## 2    2 <NA> FALSE  4.2
## 3    3   is  TRUE  3.2
## 4   NA text  TRUE   NA

2행과 4행에 NA 데이터가 존재합니다.

##   col1 col2 col3 col4
## 1    1 this TRUE  2.5
## 3    3   is TRUE  3.2

na.omit() 함수를 이용해 NA가 존재하는 행을 삭제해주도록 합니다.

결측치 대체

결측치가 존재할 경우 평균값을 대신 사용하기도 합니다.

## [1]  1  2  3  4 NA  6  7 NA

x[is.na(x)] = mean(x, na.rm = TRUE)
x

## [1] 1.000 2.000 3.000 4.000 3.833 6.000 7.000 3.833

결측치 대신 나머지 값들의 평균인 3.833을 대체하였습니다.

자료를 분석하기에 앞서

먼저 자료를 분석에 적합한 상태로 가공해야 한다.

행을 선택할 때는 data[행,]을 코딩하면 된다.

일부 분석대상자만 선택 혹은 제외하고 싶을 때 사용할 수 있다.

[R]

열을 선택할 때는 data[,열]을 코딩하면 된다.

일부 변수만 선택하고 싶을 때 사용할 수 있다.

[R]

R 공백 행 제거 - R gongbaeg haeng jegeo

열을 선택하는 또 다른 방법은 data$변수를 코딩하는 것이다.

[R]

이를 응용해서 특정 행과 열을 동시에 선택할 때는 data[행,열]로 쓰면 된다.

[R]

자료에서 변수가 특정 값을 가진 경우만 선택하고 싶다면 어떻게 할까?

1. data[data$변수==특정값,]

[R]

2. subset( )함수 이용

[R]

마지막으로 변수 값이 결측치인 경우를 제거하고 싶다면 is.na( )함수를 이용할 수 있다.

[R]

저작자표시변경금지

'소프트웨어 관련' 카테고리의 다른 글

엑셀(Excel) 단축키: 셀 수정하기 / 값 수정하기  (0) 2018.05.01
[R] 데이터 구조 확인하기 & 일부만 출력하기: str( ), head( ), tail( )  (0) 2018.04.29
[R] 난수 생성 및 seed 설정 (random sampling): sample( ), set.seed( )  (2) 2018.04.27
[R] 행과 열 바꾸기 (matrix transpose): t( )  (0) 2018.04.25
워드(Word) 단축키: 같은 작업 반복 실행하기 + 작업 되돌리기  (0) 2018.04.22