R에서 부울 연산자를 사용하여 누락된 값 확인

Jesse John 2023년6월21일
  1. R에서 기존 값과 누락된 값을 확인하는 동안 오류 발생
  2. is.na() 함수를 사용하여 R에서 누락된 값 찾기
  3. 결론
R에서 부울 연산자를 사용하여 누락된 값 확인

데이터를 분석할 때 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와 비교하거나 NANA와 비교하기 때문에 오류가 발생했습니다. 이러한 부울 조건은 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() 함수를 사용하여 누락된 값을 식별해야 합니다. 일련의 ifelse 조건 또는 중첩된 ifelse 조건을 사용하여 처리할 수 있습니다.

기본 요구 사항은 다음과 같습니다.

  1. NA 값은 다른 모든 값과 별도로 일치해야 합니다.
  2. 다른 값을 확인할 때 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
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

관련 문장 - R Error