R의 오류 해석: 'max'는 요인에 중요하지 않습니다.


어느 시점에서 R에서 다음과 같은 오류가 발생할 수 있습니다.

 'max' not meaningful for factors

이는 단순히 클래스 요인 에 속하는 변수의 “최대”를 취하려고 한다는 것을 나타냅니다.

예를 들어, 다음 벡터의 최대값을 취하려고 하면 이 오류가 생성됩니다.

 #create a vector of class vector
factor_vector <- as.factor(c(1, 7, 12, 14, 15))

#attempt to find max value in the vector
max(factor_vector)

#Error in Summary.factor(1:5, na.rm = FALSE): 
# 'max' not meaningful for factors

정의에 따르면 요인 벡터의 값은 명목 클래스에 속합니다. 즉, 값의 의미 있는 순서가 없음을 의미합니다. 따라서 찾을 수 있는 “최대” 값이 없습니다.

요인 벡터의 최대값을 찾는 간단한 해결책은 이를 문자 벡터로 변환한 다음 숫자 벡터로 변환하는 것입니다.

 #convert factor vector to numeric vector and find the max value
new_vector <- as.numeric(as.character(factor_vector))
max(new_vector)

#[1] 15

요인 벡터에 단순히 요인 이름만 포함되어 있으면 요인 벡터를 숫자 벡터로 변환한 후에도 최대값을 찾을 수 없습니다. 요인 목록의 “최대값”을 찾는 데 아무런 의미가 없기 때문입니다. 이름.

 #create factor vector with names of factors
factor_vector <- as.factor(c("first", "second", "third"))

#attempt to convert factor vector into numeric vector and find max value
new_vector <- as.numeric(as.character(factor_vector))
max(new_vector)

#Warning message:
#NAs introduced by coercion 
#[1] NA

R은 문제 없이 최대 숫자 벡터, 날짜 벡터 및 문자 벡터를 찾을 수 있다는 점에 유의해야 합니다.

 numeric_vector <- c(1, 2, 12, 14)
max(numeric_vector)

#[1] 14

character_vector <- c("a", "b", "f")
max(character_vector)

#[1] “f”

date_vector <- as.Date(c("2019-01-01", "2019-03-05", "2019-03-04"))
max(date_vector)

#[1] "2019-03-05"

따라서 벡터에서 최대값을 찾으려는 경우 벡터 유형이 Factor 가 아닌지 확인하세요.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다