R 의 데이터 구조에는 스칼라, 벡터, 행렬, 요인, 데이터 프레임, 리스트가 있습니다. 이중에서 벡터와 데이터 프레임이 통계 분석 시에 가장 많이 사용됩니다.
이번 포스티에서는 데이터 프레임에서 신규 변수를 생성하는 두 가지 방법에 대해서 알아보겠습니다. (1) 첫번째 방법은 'dataframe$variable' 처럼 '$'를 사용하는 것이며, (2) 두번째 방법으로는 transform() 함수를 사용하는 것입니다.
transform() 함수와 함께 within()함수를 사용해서 연속형 변수를 범주형 변수로 변환하는 방법에 대해서는 이전 포스팅 (☞ 바로가기) 을 참고하시기 바랍니다.
R 데이터 프레임 신규 변수 생성 : dataframe$variable, transform() |
(1) dataframe$variable
성인의 키와 몸무게를 가지고 비만도를 나타내는 지수인 체질량 지수(體質量指數, body mass index, BMI)를 신규로 생성하여 보도록 하겠습니다.
먼저 가상으로 성인 10명의 키와 몸무게로 구성된 데이터 프레임을 만들어보겠습니다.
> height <- c(175, 159, 166, 189, 171, 173, 179, 167, 182, 170) > weight <- c(62, 55, 59, 75, 61, 64, 63, 65, 70, 60) > h_w_d.f <- data.frame(height, weight) > h_w_d.f height weight 1 175 62 2 159 55 3 166 59 4 189 75 5 171 61 6 173 64 7 179 63 8 167 65 9 182 70 10 170 60 |
체질량 지수(BMI)를 구하는 공식은 키가 t 미터, 몸무게가 w 킬로그램일 때 BMI = w/t^2 입니다. (키 단위는 미터 임에 주의)
이번에는 위의 체질량 지수(BMI) 공식에 따라 dataframe$variable를 이용하여 데이터 프레임에 BMI 변수를 신규로 생성해 보도록 하겠습니다.
|
위에서 보시는 것처럼 매번 dataframe$variable 을 입력해줘야만 하는게 꽤 불편합니다. 신규 변수 생성 하나 하고 말거면 뭐 그럭저럭 쓸 수도 있겠읍니다만, 다수 변수를 이용해서 다수 변수를 신규 생성해야 하는 경우라면 아무래도 손이 많이 가는 방법이라고 하겠습니다.
손, 발이 편하고자 하는 분이라면 아래의 transfrom() 함수를 이용해보시기 바랍니다.
(2) transform(dataframe, new_variable = 수식)
> ## transform() > h_w_d.f <- transform(h_w_d.f, + bmi_2 = weight/(height/100)^2) > > h_w_d.f height weight bmi_1 bmi_2 1 175 62 20.24 20.24 2 159 55 21.76 21.76 3 166 59 21.41 21.41 4 189 75 21.00 21.00 5 171 61 20.86 20.86 6 173 64 21.38 21.38 7 179 63 19.66 19.66 8 167 65 23.31 23.31 9 182 70 21.13 21.13 10 170 60 20.76 20.76 |
(1)번의 dataset$variable 에서 매번 '$'를 입력해줘야하는 번거로움 대비 transform()은 정말 깔끔 그 자체임을 알 수 있습니다.
거기다가 한꺼번에 여러개의 변수를 생성하는 잇점도 있답니다. 아래 예제를 보시지요.
> options(digits=3) > h_w_d.f <- transform(h_w_d.f, + bmi_sqrt = sqrt(bmi_2), + bmi_log10 = log10(bmi_2) + )
> View(h_w_d.f)
|
transform() 함수와 함께 within()함수를 사용해서 연속형 변수를 범주형 변수로 변환하는 방법에 대해서는 이전 포스팅 (☞ 바로가기) 을 참고하시기 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감 ~♡' 단추를 꾸욱 눌러주세요.^^
'R 분석과 프로그래밍 > R 데이터 전처리' 카테고리의 다른 글
R 벡터, 데이터 프레임 정렬 : sort(), order(), arrange() (0) | 2015.07.27 |
---|---|
R 데이터 프레임에서 조건에 맞는 관측치, 변수 선택 : which(), subset(), select(), filter() (13) | 2015.07.27 |
R 데이터 프레임 변수명 변경 names(), rename() (2) | 2015.07.26 |
R 행렬 연산 : +, -, *, /, ^, %*%, cbind(), rbind(), colMeans(), rowMeans(), colSums(), rowSums(), t() (8) | 2015.07.26 |
R 연속형 변수를 범주형 변수로 변환하기: cut(), ifesle(), within() (20) | 2015.07.25 |