R에서 부울 연산자를 사용하여 누락된 값 확인
Jesse John
2023년6월21일
데이터를 분석할 때 CSV 파일과 같은 외부 소스에서 데이터를 가져올 수 있습니다. 데이터에는 NA
로 표시된 누락된 값이 포함될 수 있습니다.
데이터에서 다른 값을 확인해야 하거나 NA
를 확인해야 하는 경우 먼저 오류를 방지하기 위해 누락된 값을 해결해야 합니다. 이 기사에서 그 방법을 살펴보겠습니다.
우리는 문제와 해결책을 보여주는 간단한 벡터를 만들 것입니다.
샘플 코드:
myVec = c(50, 60, NA, 40, 80)
R에서 기존 값과 누락된 값을 확인하는 동안 오류 발생
먼저 벡터에 존재하는 것으로 알고 있는 60
값을 확인합니다.
그런 다음 누락된 값이 있는지 확인합니다. 둘 다 같은 오류가 발생합니다.
샘플 코드:
# Value 60 exists.
for(i in 1:length(myVec))
if(myVec[i] == 60) {print("Present")}
# A missing value, NA, exists.
for(i in 1:length(myVec))
if(myVec[i] == NA) {print("Missing")}
출력:
> # Value 60 exists.
> for(i in 1:length(myVec))
+ if(myVec[i] == 60) {print("Present")}
[1] "Present"
Error in if (myVec[i] == 60) { : missing value where TRUE/FALSE needed
> # A missing value, NA, exists.
> for(i in 1:length(myVec))
+ if(myVec[i] == NA) {print("Missing")}
Error in if (myVec[i] == NA) { : missing value where TRUE/FALSE needed
if
문에 입력한 부울 조건이 값을 NA
와 비교하거나 NA
를 NA
와 비교하기 때문에 오류가 발생했습니다. 이러한 부울 조건은 TRUE
또는 FALSE
가 아닌 NA
를 평가합니다.
샘플 코드:
# This evaluates to NA rather than TRUE.
NA == NA
# This evaluates to NA rather than FALSE.
NA != NA
# Therefore, the following code raises the error:
# "missing value where TRUE/FALSE needed".
if(NA) print("Correct")
출력:
> # This evaluates to NA rather than TRUE.
> NA == NA
[1] NA
>
> # This evaluates to NA rather than FALSE.
> NA != NA
[1] NA
>
> # Therefore, the following code raises the error:
> # "missing value where TRUE/FALSE needed".
> if(NA) print("Correct")
Error in if (NA) print("Correct") : missing value where TRUE/FALSE needed
is.na()
함수를 사용하여 R에서 누락된 값 찾기
누락된 값으로 인한 문제를 해결하려면 is.na()
함수를 사용하여 누락된 값을 식별해야 합니다. 일련의 if
및 else
조건 또는 중첩된 if
및 else
조건을 사용하여 처리할 수 있습니다.
기본 요구 사항은 다음과 같습니다.
NA
값은 다른 모든 값과 별도로 일치해야 합니다.- 다른 값을 확인할 때
NA
값을 명시적으로 제외해야 합니다.
샘플 코드:
# Using a sequence of if and else conditions.
for(i in 1:length(myVec)){
if(!is.na(myVec[i]) & myVec[i] == 60){
print("Match found")} else
if(!is.na(myVec[i]) & myVec[i] != 60){
print("Match not found")} else
if(is.na(myVec[i])) {
print("Found NA")}
}
# Using a nested if.
for(i in 1:length(myVec)){
if(!is.na(myVec[i])){
if(myVec[i]==60){
print("Match Found")} else {
print("Match not found")}
} else {
print("Found NA")}
}
출력:
> # Using a sequence of if and else conditions.
> for(i in 1:length(myVec)){
+ if(!is.na(myVec[i]) & myVec[i] == 60){
+ print("Match found")} else
+ if(!is.na(myVec[i]) & myVec[i] != 60){
+ print("Match not found")} else
+ if(is.na(myVec[i])) {
+ print("Found NA")}
+ }
[1] "Match not found"
[1] "Match found"
[1] "Found NA"
[1] "Match not found"
[1] "Match not found"
>
> # Using a nested if.
> for(i in 1:length(myVec)){
+ if(!is.na(myVec[i])){
+ if(myVec[i]==60){
+ print("Match Found")} else {
+ print("Match not found")}
+ } else {
+ print("Found NA")}
+ }
[1] "Match not found"
[1] "Match Found"
[1] "Found NA"
[1] "Match not found"
[1] "Match not found"
결론
데이터에 누락된 값이 있을 가능성이 있을 때마다 누락된 값을 다른 값과 구분하는 코드를 작성해야 합니다.
작가: Jesse John