본문 바로가기

R프로그래밍

[R프로그래밍] 데이터 프레임 필터링, 결측치(NA와 NULL)

< 결측치 >

결측치(Missing value)란, 데이터를 측정하는데 있어서 어떤 이유로 인해 값을 측정하지 못한 경우를 말한다.

결측치는 NA로 표시하며 NA는 존재하지만 불확실한 값이다.

 

var <- data.frame(mid = c(87, 88, 90, NA, 70), final = c(90, 80, 89, 58, 90))
var

 

 

 

참고로 NULL은 값이 없다는 표기이다.

 

쉽게 이야기 하면 변수는 데이터를 담는 상자에 비유할 수 있는데,

비어 있는 상자는 NULL이고, 상자 안은 볼 수 없지만 무엇인가 들어있는 것은 NA이다.

 

 

 

< 데이터 프레임 인덱싱 >

데이터 프레임의 전체가 하니라 특정 행, 열만 추출하는 것을 인덱싱이라고 한다.

행과열을 이용한 방식 변수명[행, 열] 으로 인덱싱 할 수 있다.

 

한 개의 열만 인덱싱 했을 경우에는 데이터 프레임 형태를 유지할 필요가 없다고 판단하여 자동으로 

차원이 1차원으로 축소되는데 이를 방지하기 위해서는 drop=F 옵션을 사용한다.

 

class( ) 명령어로는 데이터 구조를 파악할 수 있다.

 

student_id <- c("100", "101", "110", "120", "121")
mid_score <- c(88, 90, 85, 56, 77)
final_score <- c(92, 88, 70, 60, 90)

var <- data.frame(student_id, mid_score, final_score)
var

var[1, 2:3]
var[1, ]
var[, 3, drop=F]
var[2:4, 3, drop=F]

class(var[, 3, drop=F])
class(var[, 3])

 

 

 

 

< 데이터 프레임 필터링 >

데이터 프레임에 조건을 걸어 조건에 맞는 값만 필터링 할 수 있다.

 

1) 조건 비교

조건 비교는 조건이 참일 경우 TRUE(참) 아닐 경우 FALSE(거짓)인 논리 값을 출력한다.

>= 왼쪽이 크거나 같다.

<= 왼쪽이 작거나 같다.

> 왼쪽이 크다.

< 왼쪽이 작다.

== 양쪽이 같다.

 

2) 논리 비교

논리 비교는 두 조건을 비교해 &(and연산)의 경우는 두 조건이 모두 참일 때 TRUE를 출력

| (or연산)의 경우는 두 조건 중 하나만 참이어도 TRUE를 출력한다.

 

3 > 4
3 >= 3

3 > 4 & 3 >= 3
3 > 4 | 3 >= 3

 

 

var
var[var$mid_score >= 80, ]
var[var$mid_score >= 80 & var$final_score >= 80, ]

 

 

 

 

< NA가 포함된 데이터 프레임의 필터링 >

NA가 포함되어 있을 경우에는 [ ] (행렬방식의 인덱싱) 으로는 NA를 처리하지 못한다.

그럴 때는 subset(변수명, 조건)을 통해 필터링 할 수 있다.

 

student_id <- c("100", "101", "110", "120", "121")
mid_score <- c(88, 90, 85, 56, 77)
final_score <- c(92, 88, 70, 60, NA)

var <- data.frame(student_id, mid_score, final_score)
var

var[var$final_score >= 70, ]
subset(var, final_score >= 70)