[R] as.factor 함수로 데이터셋 분할하기

해당 포스트에서는 R에서 특정 열을 범주형 변수(as.factor)로 변환하고 이를 활용하여 데이터셋을 분할하는 방법을 소개합니다.

how-to-split-data-frame-using-as-factor-in-r

INTRO

R에서는 다양한 데이터셋 분할 방법이 있습니다. 이 포스트에서는 특정 컬럼을 범주형 변수로 변환하여 범주에 맞게 데이터셋을 분할하는 방법에 대해 샘플 데이터와 함께 설명합니다.

how-to-split-data-frame-using-as-factor-in-r
[출처] 네이버 지식인

데이터셋 분할하기

1. 샘플 데이터 생성

먼저, data.frame() 함수를 사용하여 mydf 데이터 프레임을 만듭니다. 이 데이터 프레임은 Lake, Year, Count 세 가지 열(column)을 가지며, 각각의 열에는 A, B, C라는 세 개의 Lake, 2011년과 2012년, 그리고 각 호수와 연도에 따른 물고기 수(Count)가 포함되어 있습니다.

mydf <- data.frame(
  Lake = rep(c("A", "B", "C"), 2),
  Year = rep(c("2011", "2012"), each = 3),
  Count = c(2000, 2500, 3000, 2500, 2800, 3200)
)
mydf
  Lake Year Count
1    A 2011  2000
2    B 2011  2500
3    C 2011  3000
4    A 2012  2500
5    B 2012  2800
6    C 2012  3200

2. 데이터 변환

as.factor() 함수를 사용하여 mydf$Year 열을 요인(factor)으로 변환합니다. 그 후, str() 함수를 사용하여 mydf$Year 열의 구조를 출력하여 정상적으로 범주형 변수로 변환되었는지 확인합니다.

mydf$Year <- as.factor(mydf$Year)
str(mydf$Year)
 Factor w/ 2 levels "2011","2012": 1 1 1 2 2 2

3. 데이터 분할

subset() 함수를 사용하여 Year 열의 값이 2011년인 경우와 2012년인 경우를 각각 mydf_2011mydf_2012 데이터 프레임에 저장합니다. 이를 통해, 2011년과 2012년에 대한 물고기 수를 각각 확인할 수 있습니다.

mydf_2011 <- subset(mydf, Year == Year[1])
mydf_2011
  Lake Year Count
1    A 2011  2000
2    B 2011  2500
3    C 2011  3000
mydf_2012 <- subset(mydf, Year == Year[2])
mydf_2012
  Lake Year Count
1    A 2011  2000
2    B 2011  2500
3    C 2011  3000

마무리

이번 포스트에서는 샘플 데이터를 만들고, 데이터 유형을 변환하고, 특정 조건에 따라 데이터 프레임을 구분하는 방법을 설명하였습니다. 이는, R에서 데이터를 다룰 때 기본적이면서 매우 중요한 과정 중 하나입니다. 많은 연습을 통해 다양한 문제를 상황에 맞게 해결하실 수 있길 바라겠습니다.

관련 링크

[1] 네이버 지식인