R/R basic

내 변수의 속성은 무엇인가 str(), is.factor(), is.numeric()

시키테이 2021. 4. 6. 08:51
반응형

R의 데이터를 보다보면 변수 속성이 제각각일 때가 많습니다. 어떤 건 숫자이고 (num), 어떤 건 팩터(factor)이고, 어떤 변수는 문자(character)이고.. 이럴 때 각 칼럼의 데이터 속성이 무엇인지를 볼 때 가장 흔하게 쓰는 명령어가  str()입니다. 예를 들어 R에서 데이터프레임 이름이 df이고 이 데이터프레임의 모든 칼럼 속성이 무엇인지 알고 싶다고 하면 그냥 

 

str(df)하면 .. 아래와 같이 쭉 뜹니다...

 

근데 모든 칼럼 속성이 무엇인지 다 알 필요 없고, 각 칼럼의 속성이 factor인지 아닌지 그것만 알고 싶다고 하면 

 

is.factor()라는 함수를 쓰는데 이 때는 어떤 칼럼을 테스트할지 적어줘야 합니다. 예를 들어 df라는 데이터프레임 중에 X2015라는 칼럼이 팩터인지 여부를 알고 싶다고 하면 그냥 is.factor(df$X2015)하면 되겠지요?

 

만약에 모든 칼럼을 일일이 테스트하면서 이게 팩터인지 여부를 다 알고 싶다고 하면 다음과 같이 하면 됩니다. sapply라는 함수가 있는데 매우 유용합니다. sapply는 참고로, 괄호 안에 있는 함수를 괄호 한에 있는 모든 경우에 다 일일이 대입해서 적용하라는 뜻으로 해석하면 되겠습니다. 

 

우선, df라는 데이터프레임의 칼럼 이름들을 한 군데 몰아주시고 

 

variable<-colnames(df)

 

그 다음에 sapply를 써서 이 모든 칼럼에 하나하나씩 is.factor()라는 함수를 적용시켜봐라. 하면 다음과 같은 결과가 뜹니다. 

is.factor()이외에도 is.numeric(): 이 칼럼 속성이 숫자이니? 등이 있습니다. 이밖에도 is.na() is.null() 등등이 있습니다. 

 

 이 명령어가 생각보다 유용할 때가 많습니다. 왜냐하면 R로 데이터를 읽었는데 1을 그냥 1 (factor) 로 받아들이는 게 아니라 1.0000000 (numeric) 이런 continuous number로 받아들이는 경우도 있고 반대의 경우도 있습니다. 이 때는 이런 명령어를 통해 우선 칼럼의 속성을 파악하는 게 중요합니다. 그 다음에 속성 전환을 하면 됩니다. 

 

 

반응형