결측값을 제거하기 위해서는 미리 결측값의 갯수와 결측값이 포함되어 있는 컬럼을 아는 것이 중요합니다.
data(airquality)
main <- airquality
방법1. colSums() 사용하기
colSums(is.na(main))
> colSums(is.na(main))
Ozone Solar.R Wind Temp Month Day
37 7 0 0 0 0
방법2. sapply() 사용하기
sapply(main, function(x) {
sum(is.na(x))
})
> sapply(main, function(x) {
+ sum(is.na(x))
+ })
Ozone Solar.R Wind Temp Month Day
37 7 0 0 0 0
>
library(mlbench)
data(PimaIndiansDiabetes2)
main <- PimaIndiansDiabetes2
colSums(is.na(main))
> colSums(is.na(main))
pregnant glucose pressure triceps insulin mass pedigree age
0 5 35 227 374 11 0 0
diabetes
0
가장 흔한 na.omit() 사용하기
main <- na.omit(main)
colSums(is.na(main)
> colSums(is.na(main))
pregnant glucose pressure triceps insulin mass pedigree age
0 0 0 0 0 0 0 0
diabetes
0
complete.cases 사용하기
main <- main[complete.cases(main), ]
colSums(is.na(main))
> colSums(is.na(main))
pregnant glucose pressure triceps insulin mass pedigree age
0 0 0 0 0 0 0 0
diabetes
0
파이프 연산자(%>%) 사용하기
정확히 말하자면, 제거를 하는 것이 아닌 특정 컬럼의 결측값을 제외한 나머지를 선택하는 방법입니다.
library(mlbench)
data(PimaIndiansDiabetes2)
main <- PimaIndiansDiabetes2
colSums(is.na(main))
> colSums(is.na(main))
pregnant glucose pressure triceps insulin mass pedigree age
0 5 35 227 374 11 0 0
diabetes
0
main <- main %>% filter( !is.na(pressure) )
colSums(is.na(main))
pregnant glucose pressure triceps insulin mass pedigree age
0 5 0 194 339 4 0 0
diabetes
0
mass, pressure컬럼의 결측값을 각 컬럼의 중앙값으로 대체
결측값 수 미리 확인
library(mlbench)
data(PimaIndiansDiabetes2)
main <- PimaIndiansDiabetes2
colSums(is.na(main))
> colSums(is.na(main))
pregnant glucose pressure triceps insulin mass pedigree age
0 5 35 227 374 11 0 0
diabetes
0
중앙값 미리 생성
gme <- median(main$glucose, na.rm = T) # glucose의 중앙값
mme <- median(main$mass, na.rm = T) # mass의 중앙값
> gme
[1] 117
> mme
[1] 32.3
glucose컬럼의 결측값 확인
head(main$glucose, 100)
> head(main$glucose, 100)
[1] 148 85 183 89 137 116 78 115 197 125 110 168 139 189 166 100 118 107
[19] 103 115 126 99 196 119 143 125 147 97 145 117 109 158 88 92 122 103
[37] 138 102 90 111 180 133 106 171 159 180 146 71 103 105 103 101 88 176
[55] 150 73 187 100 146 105 84 133 44 141 114 99 109 109 95 146 100 139
[73] 126 129 79 NA 62 95 131 112 113 74 83 101 137 110 106 100 136 107
[91] 80 123 81 134 142 144 92 71 93 122
main$glucose[is.na(main$glucose) ] <- gme
head(main$glucose, 100)
main$glucose[76]
> head(main$glucose, 100)
[1] 148 85 183 89 137 116 78 115 197 125 110 168 139 189 166 100 118 107
[19] 103 115 126 99 196 119 143 125 147 97 145 117 109 158 88 92 122 103
[37] 138 102 90 111 180 133 106 171 159 180 146 71 103 105 103 101 88 176
[55] 150 73 187 100 146 105 84 133 44 141 114 99 109 109 95 146 100 139
[73] 126 129 79 117 62 95 131 112 113 74 83 101 137 110 106 100 136 107
[91] 80 123 81 134 142 144 92 71 93 122
> main$glucose[76]
[1] 117
glucose 컬럼의 중앙값인 gme
인 117로 대체된 모습을 확인할 수 있습니다.
방법2. impute() 함수
impute함수를 사용하면 위 방법보다 훨씬 간단하게 결측값을 원하는 값으로 대체 가능합니다.
혹시나 이 방법을 보시는 분 중 빅분기를 준비중이시라면 이 방법은 추천드리지 않습니다.
impute함수는 Hmisc라이브러리를 사용하는데, Hmisc라이브러리는 시험장에서 사용할 수 없기때문입니다.
install.pacakages("Hmisc")
library(Hmisc)
head(main$mass, 100)
> head(main$mass, 100)
[1] 33.6 26.6 23.3 28.1 43.1 25.6 31.0 35.3 30.5 NA 37.6 38.0 27.1 30.1 25.8
[16] 30.0 45.8 29.6 43.3 34.6 39.3 35.4 39.8 29.0 36.6 31.1 39.4 23.2 22.2 34.1
[31] 36.0 31.6 24.8 19.9 27.6 24.0 33.2 32.9 38.2 37.1 34.0 40.2 22.7 45.4 27.4
[46] 42.0 29.7 28.0 39.1 NA 19.4 24.2 24.4 33.7 34.7 23.0 37.7 46.8 40.5 41.5
[61] NA 32.9 25.0 25.4 32.8 29.0 32.5 42.7 19.6 28.9 32.9 28.6 43.4 35.1 32.0
[76] 24.7 32.6 37.7 43.2 25.0 22.4 NA 29.3 24.6 48.8 32.4 36.6 38.5 37.1 26.5
[91] 19.1 32.0 46.7 23.8 24.7 33.9 31.6 20.4 28.7 49.7
library(Hmisc)
main$mass <- impute(main$mass, mme)
head(main$mass, 100)
> head(main$mass, 100)
[1] 33.6 26.6 23.3 28.1 43.1 25.6 31.0 35.3 30.5 32.3* 37.6 38.0
[13] 27.1 30.1 25.8 30.0 45.8 29.6 43.3 34.6 39.3 35.4 39.8 29.0
[25] 36.6 31.1 39.4 23.2 22.2 34.1 36.0 31.6 24.8 19.9 27.6 24.0
[37] 33.2 32.9 38.2 37.1 34.0 40.2 22.7 45.4 27.4 42.0 29.7 28.0
[49] 39.1 32.3* 19.4 24.2 24.4 33.7 34.7 23.0 37.7 46.8 40.5 41.5
[61] 32.3* 32.9 25.0 25.4 32.8 29.0 32.5 42.7 19.6 28.9 32.9 28.6
[73] 43.4 35.1 32.0 24.7 32.6 37.7 43.2 25.0 22.4 32.3* 29.3 24.6
[85] 48.8 32.4 36.6 38.5 37.1 26.5 19.1 32.0 46.7 23.8 24.7 33.9
[97] 31.6 20.4 28.7 49.7
head출력 결과에서 *이 붙은 곳을 보면 NA였던 자리인데, 현재 mass의 중앙값인 mme
로 대체 된것을 확인할 수 있습니다
참고로 *은 제가 붙여준것이 아닌 impute함수를 사용하면 자동으로 표시 됩니다. 실제로 데이터에 붙은것은 아니기때문에 문제가 되지 않습니다.
또한 여기서는 중앙값을 미리 계산해서 넣어줬지만,
main$pressure <- impute(main$pressure, median)
그냥 impute옵션으로 median이나 mean 명령어를 줘서 중앙값, 평균으로도 곧바로 대체가 가능합니다. 사실상 가장 편한 대체 방법인 것 같습니다.
방법3. for문과 if문 사용하기
혹시 빅분기 시험 중 다른 함수나 방법이 생각나지 않는다면, 코드는 길지만 가장 원시적인 for문과 if문을 사용해도 괜찮은 방법입니다.
head(main$insulin, 100)
> head(main$insulin, 100)
[1] NA NA NA 94 168 NA 88 NA 543 NA NA NA NA 846 175 NA 230 NA
[19] 83 96 235 NA NA NA 146 115 NA 140 110 NA NA 245 54 NA NA 192
[37] NA NA NA 207 70 NA NA 240 NA NA NA NA NA NA 82 36 23 300
[55] 342 NA 304 110 NA 142 NA NA NA 128 NA NA NA NA 38 100 90 140
[73] NA 270 NA NA NA NA NA NA NA NA 71 NA NA 125 NA 71 110 NA
[91] NA 176 48 NA 64 228 NA 76 64 220
insulin
의 결측값을 100으로 대체
n <- nrow(main)
for(i in 1:n) {
if( is.na(main$insulin[i]) ) {
main$insulin[i] <- 100
}
}
head(main$insulin, 100)
> head(main$insulin, 100)
[1] 100 100 100 94 168 100 88 100 543 100 100 100 100 846 175 100 230 100
[19] 83 96 235 100 100 100 146 115 100 140 110 100 100 245 54 100 100 192
[37] 100 100 100 207 70 100 100 240 100 100 100 100 100 100 82 36 23 300
[55] 342 100 304 110 100 142 100 100 100 128 100 100 100 100 38 100 90 140
[73] 100 270 100 100 100 100 100 100 100 100 71 100 100 125 100 71 110 100
[91] 100 176 48 100 64 228 100 76 64 220
방법4. fill함수 사용하기
library(tidyr)의 fill 함수를 사용하면 결측값을 위 아래의 값으로 대체 할 수 있습니다.
결측값 대체 전
> colSums(is.na(main))
pregnant glucose pressure triceps insulin mass pedigree age
0 5 35 227 374 11 0 0
diabetes
0
> head(main$insulin, 100)
[1] NA NA NA 94 168 NA 88 NA 543 NA NA NA NA 846 175 NA 230 NA
[19] 83 96 235 NA NA NA 146 115 NA 140 110 NA NA 245 54 NA NA 192
[37] NA NA NA 207 70 NA NA 240 NA NA NA NA NA NA 82 36 23 300
[55] 342 NA 304 110 NA 142 NA NA NA 128 NA NA NA NA 38 100 90 140
[73] NA 270 NA NA NA NA NA NA NA NA 71 NA NA 125 NA 71 110 NA
[91] NA 176 48 NA 64 228 NA 76 64 220
fill 함수 적용
main <- main %>% fill(insulin, .direction = 'updown')
colSums(is.na(main))
head(main$insulin, 100)
> colSums(is.na(main))
pregnant glucose pressure triceps insulin mass pedigree age
0 5 35 227 0 11 0 0
diabetes
0
> head(main$insulin, 100)
[1] 94 94 94 94 168 88 88 543 543 846 846 846 846 846 175 230 230 83
[19] 83 96 235 146 146 146 146 115 140 140 110 245 245 245 54 192 192 192
[37] 207 207 207 207 70 240 240 240 82 82 82 82 82 82 82 36 23 300
[55] 342 304 304 110 142 142 128 128 128 128 38 38 38 38 38 100 90 140
[73] 270 270 71 71 71 71 71 71 71 71 71 125 125 125 71 71 110 176
[91] 176 176 48 64 64 228 76 76 64 220
결측값이 있을 때의 자료와 바뀐 후의 자료를 잘비교해보시면 어떤 함수인지 바로 감을 잡으실 수 있으실 겁니다.
NA가1 ~ 3 까지 있고 94부터 값이 있습니다 이 경우는 up을 기준으로 94의 값을 채워주었습니다.
fill함수의 .direciton 옵션은 'up', 'down', 'updown', 'downup'의 4가지 옵션이 있으니 선택하시면 됩니다. 단, 'up', 'down'은 애매하게 첫번째나 마지막에 결측값이 있을 경우, 결측값 처리가 되지 않을 수도 있으니, 저는 'updown'이나 'downup'을 추천드립니다.
보통 이 방법은 factor형의 자료구조에 결측값이 있을 때 채우는 방식인데,
여기서는 그냥 보여드리기 위해서 num타입의 결측값을 처리해 보았습니다. 특정 용도가 있을 때 사용하는 방법이니 본인이 잘 선택해서 사용하시면 될 것 같습니다.
대게 NA가 결측값이긴 하지만, 그냥 빈칸인 ""이나 무작정 어떤 값이 결측값으로 지정될 수 도 있습니다.
이럴 때는 조금 야매이긴 하지만 방법이 있습니다.
예를 들어 csv파일을 읽어와서 데이터 셋으로 만든다고 했을 때 입니다.
main <- read.csv(
file = 'Loan.csv',
fileEncoding = 'UTF-8-BOM',
)
해당 csv파일을 main 데이터 셋으로 불러왔을 경우
결측값을 확인해보면,
> colSums(is.na(main))
Loan_ID loan_status Principal terms effective_date
0 0 0 0 0
due_date paid_off_time past_due_days age education
0 0 300 0 0
Gender
0
past_due_days
컬럼의 결측값 300개를 제외하고는 결측값이 하나도 없습니다.
하지만, paid_off_time
컬럼을 한번 열어봤을 때,
main$paid_off_time
> main$paid_off_time
... 생략
[201] 9/20/2016 8:26 10/11/2016 23:00 9/24/2016 20:47 9/26/2016 16:00
[205] 10/11/2016 9:01 9/16/2016 14:52 11/10/2016 13:00 10/9/2016 10:00
[209] 9/12/2016 14:40 10/11/2016 16:00 9/23/2016 21:58 10/8/2016 18:48
[213] 10/10/2016 16:41 10/11/2016 13:01 9/16/2016 2:34 11/10/2016 16:00
[217] 9/21/2016 8:11 9/26/2016 9:00 9/26/2016 13:00 10/11/2016 13:01
[221] 9/26/2016 23:00 10/11/2016 9:01 11/10/2016 13:00 9/26/2016 23:00
[225] 10/9/2016 10:00 10/11/2016 13:01 9/23/2016 14:01 9/25/2016 13:29
[229] 9/25/2016 14:50 9/26/2016 9:00 10/26/2016 9:00 9/25/2016 9:01
[233] 10/8/2016 15:35 10/11/2016 16:01 9/26/2016 19:35 10/9/2016 21:28
[237] 10/7/2016 16:45 9/24/2016 12:13 10/11/2016 9:01 9/14/2016 23:02
[241] 10/8/2016 11:03 9/26/2016 9:00 9/26/2016 23:00 9/25/2016 19:31
[245] 9/14/2016 19:48 10/12/2016 23:00 9/25/2016 12:48 9/26/2016 21:18
[249] 10/7/2016 10:22 9/26/2016 6:17 9/22/2016 16:57 10/9/2016 21:57
[253] 10/4/2016 12:59 9/17/2016 20:51 10/12/2016 23:00 10/8/2016 15:51
[257] 9/27/2016 9:00 9/27/2016 9:00 9/16/2016 15:57 10/12/2016 9:00
[261] 9/26/2016 7:48 9/21/2016 16:53 10/11/2016 0:29 9/25/2016 10:37
[265] 9/27/2016 13:00 9/26/2016 15:10 9/24/2016 12:46 9/28/2016 9:00
[269] 10/13/2016 9:00 10/6/2016 12:09 10/14/2016 11:03 10/8/2016 17:12
[273] 11/12/2016 9:00 10/13/2016 9:00 10/13/2016 13:00 9/27/2016 15:52
[277] 9/28/2016 13:00 10/13/2016 9:00 9/15/2016 0:43 10/10/2016 10:25
[281] 9/27/2016 20:41 9/28/2016 9:00 10/6/2016 6:51 10/12/2016 6:25
[285] 9/27/2016 22:50 11/12/2016 9:00 10/12/2016 12:30 10/12/2016 3:49
[289] 10/13/2016 13:00 9/27/2016 7:48 9/22/2016 9:28 10/11/2016 16:33
[293] 9/18/2016 16:56 10/13/2016 9:00 10/13/2016 13:00 10/13/2016 13:00
[297] 9/21/2016 4:42 10/13/2016 9:00 10/13/2016 9:00 10/13/2016 11:00
[301]
[305]
[309]
[313]
[317]
[321]
[325]
[329]
[333]
[337]
[341]
[345]
[349]
[353]
[357]
[361]
[365]
[369]
[373]
[377]
[381]
[385]
[389]
[393]
[397]
[401] 10/10/2016 11:45 9/27/2016 17:00 11/20/2016 14:10 9/28/2016 15:38
[405] 9/26/2016 17:22 10/21/2016 14:00 9/26/2016 11:03 11/5/2016 15:39
[409] 11/22/2016 15:53 9/29/2016 10:30 10/10/2016 15:18 11/5/2016 10:49
[413] 9/27/2016 17:10 9/26/2016 11:35 10/12/2016 9:59 9/27/2016 17:14
[417] 10/11/2016 12:45 9/28/2016 11:38 10/7/2016 13:21 11/4/2016 15:37
[421] 9/28/2016 17:39 10/12/2016 9:52 9/29/2016 15:12 10/12/2016 11:17
[425] 11/10/2016 22:58 11/3/2016 15:23 10/11/2016 16:44 10/11/2016 11:02
[429] 10/12/2016 13:17 10/11/2016 17:22 9/28/2016 14:02 9/29/2016 13:42
[433] 9/19/2016 15:00 10/12/2016 14:32 10/11/2016 11:33 10/11/2016 16:27
[437] 11/15/2016 15:27 10/11/2016 16:13 10/17/2016 10:06 11/14/2016 13:15
[441] 10/24/2016 16:20 9/27/2016 16:35 10/11/2016 11:48 11/7/2016 19:21
[445] 10/12/2016 16:22 9/27/2016 17:24 11/4/2016 11:07 11/2/2016 9:39
[449] 10/13/2016 18:18 10/11/2016 11:29 10/13/2016 16:27 9/29/2016 11:19
[453] 9/28/2016 11:17 10/14/2016 11:04 10/17/2016 17:40 9/28/2016 9:42
[457] 11/18/2016 15:52 10/30/2016 14:19 10/13/2016 15:10 9/28/2016 13:36
[461] 9/28/2016 15:34 11/17/2016 11:55 11/15/2016 18:51 9/30/2016 10:23
[465] 11/11/2016 17:17 10/12/2016 12:54 10/15/2016 9:48 10/27/2016 11:14
[469] 10/15/2016 14:14 12/2/2016 9:45 9/28/2016 15:02 11/4/2016 14:46
[473] 11/16/2016 12:12 10/14/2016 19:02 9/28/2016 11:34 11/9/2016 18:12
[477] 10/31/2016 13:07 10/20/2016 17:38 11/7/2016 8:55 10/12/2016 18:26
[481] 10/25/2016 13:44 9/29/2016 15:07 9/27/2016 11:40 10/18/2016 19:08
[485] 10/15/2016 9:23 10/14/2016 10:07 11/21/2016 11:36 10/13/2016 12:02
[489] 10/9/2016 19:30 10/12/2016 18:04 10/17/2016 10:53 11/9/2016 13:41
[493] 10/25/2016 17:44 9/29/2016 12:45 10/13/2016 14:45 10/14/2016 19:08
[497] 10/10/2016 20:02 9/29/2016 11:49 11/11/2016 22:40 10/19/2016 11:58
321 Levels: 10/1/2016 10:18 10/1/2016 16:48 ... 9/9/2016 13:45
301번 부터 보면, 그냥 값이 전부 입력되지 않았습니다.
이럼에도 불구하고, colSums(is.na())를 사용해서 확인해보면 우리는 결측값으로 확인할 수 없습니다.
이럴 때 결측값의 기준을 정해서 범위를 지정해 줄 수 있는데, na.strings 옵션을 넣어주면 됩니다.
다시 한번 read.csv를 실행해보겠습니다
저는 "" (빈칸), "na", "NA"를 결측값으로 지정한다는 설정을 넣어줬습니다.
main <- read.csv(
file = 'Loan.csv',
fileEncoding = 'UTF-8-BOM',
stringsAsFactor = TRUE,
na.strings = c("", "na", "NA")
)
colSums(is.na(main))
> colSums(is.na(main))
Loan_ID loan_status Principal terms effective_date
0 0 0 0 0
due_date paid_off_time past_due_days age education
0 100 300 0 0
Gender
0
이번에는 아까와 다르게 paid_off_time
에도 결측값의 개수가 제대로 파악이 됩니다.
> main$paid_off_time
... 생략
[201] 9/20/2016 8:26 10/11/2016 23:00 9/24/2016 20:47 9/26/2016 16:00
[205] 10/11/2016 9:01 9/16/2016 14:52 11/10/2016 13:00 10/9/2016 10:00
[209] 9/12/2016 14:40 10/11/2016 16:00 9/23/2016 21:58 10/8/2016 18:48
[213] 10/10/2016 16:41 10/11/2016 13:01 9/16/2016 2:34 11/10/2016 16:00
[217] 9/21/2016 8:11 9/26/2016 9:00 9/26/2016 13:00 10/11/2016 13:01
[221] 9/26/2016 23:00 10/11/2016 9:01 11/10/2016 13:00 9/26/2016 23:00
[225] 10/9/2016 10:00 10/11/2016 13:01 9/23/2016 14:01 9/25/2016 13:29
[229] 9/25/2016 14:50 9/26/2016 9:00 10/26/2016 9:00 9/25/2016 9:01
[233] 10/8/2016 15:35 10/11/2016 16:01 9/26/2016 19:35 10/9/2016 21:28
[237] 10/7/2016 16:45 9/24/2016 12:13 10/11/2016 9:01 9/14/2016 23:02
[241] 10/8/2016 11:03 9/26/2016 9:00 9/26/2016 23:00 9/25/2016 19:31
[245] 9/14/2016 19:48 10/12/2016 23:00 9/25/2016 12:48 9/26/2016 21:18
[249] 10/7/2016 10:22 9/26/2016 6:17 9/22/2016 16:57 10/9/2016 21:57
[253] 10/4/2016 12:59 9/17/2016 20:51 10/12/2016 23:00 10/8/2016 15:51
[257] 9/27/2016 9:00 9/27/2016 9:00 9/16/2016 15:57 10/12/2016 9:00
[261] 9/26/2016 7:48 9/21/2016 16:53 10/11/2016 0:29 9/25/2016 10:37
[265] 9/27/2016 13:00 9/26/2016 15:10 9/24/2016 12:46 9/28/2016 9:00
[269] 10/13/2016 9:00 10/6/2016 12:09 10/14/2016 11:03 10/8/2016 17:12
[273] 11/12/2016 9:00 10/13/2016 9:00 10/13/2016 13:00 9/27/2016 15:52
[277] 9/28/2016 13:00 10/13/2016 9:00 9/15/2016 0:43 10/10/2016 10:25
[281] 9/27/2016 20:41 9/28/2016 9:00 10/6/2016 6:51 10/12/2016 6:25
[285] 9/27/2016 22:50 11/12/2016 9:00 10/12/2016 12:30 10/12/2016 3:49
[289] 10/13/2016 13:00 9/27/2016 7:48 9/22/2016 9:28 10/11/2016 16:33
[293] 9/18/2016 16:56 10/13/2016 9:00 10/13/2016 13:00 10/13/2016 13:00
[297] 9/21/2016 4:42 10/13/2016 9:00 10/13/2016 9:00 10/13/2016 11:00
[301] <NA> <NA> <NA> <NA>
[305] <NA> <NA> <NA> <NA>
[309] <NA> <NA> <NA> <NA>
[313] <NA> <NA> <NA> <NA>
[317] <NA> <NA> <NA> <NA>
[321] <NA> <NA> <NA> <NA>
[325] <NA> <NA> <NA> <NA>
[329] <NA> <NA> <NA> <NA>
[333] <NA> <NA> <NA> <NA>
[337] <NA> <NA> <NA> <NA>
[341] <NA> <NA> <NA> <NA>
[345] <NA> <NA> <NA> <NA>
[349] <NA> <NA> <NA> <NA>
[353] <NA> <NA> <NA> <NA>
[357] <NA> <NA> <NA> <NA>
[361] <NA> <NA> <NA> <NA>
[365] <NA> <NA> <NA> <NA>
[369] <NA> <NA> <NA> <NA>
[373] <NA> <NA> <NA> <NA>
[377] <NA> <NA> <NA> <NA>
[381] <NA> <NA> <NA> <NA>
[385] <NA> <NA> <NA> <NA>
[389] <NA> <NA> <NA> <NA>
[393] <NA> <NA> <NA> <NA>
[397] <NA> <NA> <NA> <NA>
[401] 10/10/2016 11:45 9/27/2016 17:00 11/20/2016 14:10 9/28/2016 15:38
[405] 9/26/2016 17:22 10/21/2016 14:00 9/26/2016 11:03 11/5/2016 15:39
[409] 11/22/2016 15:53 9/29/2016 10:30 10/10/2016 15:18 11/5/2016 10:49
[413] 9/27/2016 17:10 9/26/2016 11:35 10/12/2016 9:59 9/27/2016 17:14
[417] 10/11/2016 12:45 9/28/2016 11:38 10/7/2016 13:21 11/4/2016 15:37
[421] 9/28/2016 17:39 10/12/2016 9:52 9/29/2016 15:12 10/12/2016 11:17
[425] 11/10/2016 22:58 11/3/2016 15:23 10/11/2016 16:44 10/11/2016 11:02
[429] 10/12/2016 13:17 10/11/2016 17:22 9/28/2016 14:02 9/29/2016 13:42
[433] 9/19/2016 15:00 10/12/2016 14:32 10/11/2016 11:33 10/11/2016 16:27
[437] 11/15/2016 15:27 10/11/2016 16:13 10/17/2016 10:06 11/14/2016 13:15
[441] 10/24/2016 16:20 9/27/2016 16:35 10/11/2016 11:48 11/7/2016 19:21
[445] 10/12/2016 16:22 9/27/2016 17:24 11/4/2016 11:07 11/2/2016 9:39
[449] 10/13/2016 18:18 10/11/2016 11:29 10/13/2016 16:27 9/29/2016 11:19
[453] 9/28/2016 11:17 10/14/2016 11:04 10/17/2016 17:40 9/28/2016 9:42
[457] 11/18/2016 15:52 10/30/2016 14:19 10/13/2016 15:10 9/28/2016 13:36
[461] 9/28/2016 15:34 11/17/2016 11:55 11/15/2016 18:51 9/30/2016 10:23
[465] 11/11/2016 17:17 10/12/2016 12:54 10/15/2016 9:48 10/27/2016 11:14
[469] 10/15/2016 14:14 12/2/2016 9:45 9/28/2016 15:02 11/4/2016 14:46
[473] 11/16/2016 12:12 10/14/2016 19:02 9/28/2016 11:34 11/9/2016 18:12
[477] 10/31/2016 13:07 10/20/2016 17:38 11/7/2016 8:55 10/12/2016 18:26
[481] 10/25/2016 13:44 9/29/2016 15:07 9/27/2016 11:40 10/18/2016 19:08
[485] 10/15/2016 9:23 10/14/2016 10:07 11/21/2016 11:36 10/13/2016 12:02
[489] 10/9/2016 19:30 10/12/2016 18:04 10/17/2016 10:53 11/9/2016 13:41
[493] 10/25/2016 17:44 9/29/2016 12:45 10/13/2016 14:45 10/14/2016 19:08
[497] 10/10/2016 20:02 9/29/2016 11:49 11/11/2016 22:40 10/19/2016 11:58
320 Levels: 10/1/2016 10:18 10/1/2016 16:48 ... 9/9/2016 13:45
심지어 아까처럼 paid_off_time
를 실행해보면 그냥""로 빈칸이 아닌 NA로 모두 처리가 되어있습니다.
이상 R에서 결측값과 관련된 팁이었습니다. 감사합니다.