반응형
아래와 같은 벡터가 있다고 합시다.
v=c(NA,2,3,4,NA)
결측치 여부를 확인하는 것은 is.na 로 가능합니다.
> is.na(v)
[1] TRUE FALSE FALSE FALSE TRUE
오늘 하고 싶은 것은 결측치의 위치를 출력해주는 함수를 만드는 것입니다. 위 벡터를 예로 들면 결측치의 위치인 1과 5를 출력해주는 것입니다.
함수를 만들기 전에 먼저 하나의 벡터의 NA 위치를 출력해주는 코드를 짜봅시다. 아래와 같습니다.
v=c(NA,2,3,4,NA)
res=c()
for (i in 1:length(v)){
if (is.na(v[i])){
res=append(res,i)
}
}
v[i] 가 NA 인 경우에 i를 res에 추가하는 코드입니다. 예를들어 v[3]이 NA라면 3이 res에 추가됩니다. 세번째 원소가 NA이므로 3을 r추가하는 것입니다. res는 우리가 얻고싶은 결과값입니다. 위 예제에서는 res가 1,5가 되어야 합니다.
위 코드를 실행한 뒤 res를 입력해보면 아래와 같이 우리가 원하는 대로 출력되는 것을 알 수 있습니다.
> res
[1] 1 5
이제 함수로 만들어봅시다. 함수 이름은 where.na.vec로 했습니다.
where.na.vec=function(v){
res=c()
for (i in 1:length(v)){
if (is.na(v[i])){
res=append(res,i)
}
}
return(res)
}
함수를 사용해봅시다.
> where.na.vec(v)
[1] 1 5
결과가 잘 출력됩니다. 다른 벡터를 하나 만들어서 한번 더 확인해봅시다.
> v2=c(NA,NA,NA,4)
> where.na.vec(v2)
[1] 1 2 3
반응형
'R 주제 > R 기초 및 통계 강의' 카테고리의 다른 글
[R강의] 165. 데이터프레임의 특정 열을 기준으로 결측치를 제거하는 방법 (1) | 2023.08.29 |
---|---|
[R강의] 164. 데이터프레임의 결측치 위치를 알려주는 함수 만들어보기 (0) | 2023.08.29 |
[R강의] 162. 데이터프레임 특정 열을 기준으로 오름차순, 내림차순 정렬하기 (0) | 2023.08.29 |
[R강의] 161. 데이터프레임 행과 열을 제거하는 방법 (0) | 2023.04.26 |
[R강의] 160. 데이터프레임 행의 순서를 바꾸는 방법과 원리 (0) | 2023.04.26 |
댓글