데이터셋과 데이터 객체 다루기

SAS 사용자를 위한 R

Melinda Higgins, PhD

Research Professor/Senior Biostatistician Emory University

car 패키지에서 Davis 데이터셋 로드

  • car 패키지의 Davis 데이터셋 로드
  • 상위 6행 보기
library(car)
head(Davis)
  sex weight height repwt repht
1   M     77    182    77   180
2   F     58    161    51   159
3   F     53    161    54   158
4   M     68    177    70   175
5   F     59    157    59   155
6   M     76    170    76   165
SAS 사용자를 위한 R

sas data step r mutate add bmi create davismod

SAS 사용자를 위한 R

sas data step r mutate add bmi create davismod

SAS 사용자를 위한 R

sas data step r mutate add bmi create davismod

SAS 사용자를 위한 R

새 변수 계산 - BMI

davismod <- Davis %>%
  mutate(bmi = weight / ((height/100))^2)

head(davismod)
  sex weight height repwt repht    bmi
1   M     77    182    77   180 23.245
2   F     58    161    51   159 22.375
3   F     53    161    54   158 20.446
4   M     68    177    70   175 21.705
5   F     59    157    59   155 23.936
6   M     76    170    76   165 26.297
SAS 사용자를 위한 R

새 변수 계산 - 논리 연산자

davismod <- davismod %>%
  mutate(diffht = repht - height) %>%
  mutate(difflow = diffht <= -3)

davismod %>%
  head()
  sex weight height repwt repht      bmi diffht difflow
1   M     77    182    77   180 23.24598     -2   FALSE
2   F     58    161    51   159 22.37568     -2   FALSE
3   F     53    161    54   158 20.44674     -3    TRUE
4   M     68    177    70   175 21.70513     -2   FALSE
5   F     59    157    59   155 23.93606     -2   FALSE
6   M     76    170    76   165 26.29758     -5    TRUE
SAS 사용자를 위한 R

ifelse로 재코딩

davismod <- davismod %>%
  mutate(bmicat = ifelse(test = bmi < 25, yes = "1. underwt/norm",
                         no = ifelse(bmi < 30, "2. overwt", "3. obese")))

# display rows 15 to 21
davismod %>% slice(15:21)
  sex weight height repwt repht      bmi diffht difflow          bmicat
1   F     52    163    57   160 19.57168     -3    TRUE 1. underwt/norm
2   F     65    166    66   165 23.58833     -1   FALSE 1. underwt/norm
3   M     92    187   101   185 26.30902     -2   FALSE       2. overwt
4   F     62    168    62   165 21.96712     -3    TRUE 1. underwt/norm
5   M     76    197    75   200 19.58309      3   FALSE 1. underwt/norm
6   F     61    175    61   171 19.91837     -4    TRUE 1. underwt/norm
7   M    119    180   124   178 36.72840     -2   FALSE        3. obese
SAS 사용자를 위한 R

객체 유형 테스트 및 확인

davismod %>%
  select(bmi, bmicat) %>%
  head()
       bmi          bmicat
1 23.24598 1. underwt/norm
2 22.37568 1. underwt/norm
3 20.44674 1. underwt/norm
4 21.70513 1. underwt/norm
5 23.93606 1. underwt/norm
6 26.29758       2. overwt
davismod %>%
  pull(bmi) %>%
  is.numeric()
[1] TRUE
davismod %>%
  pull(bmicat) %>%
  is.numeric()
[1] FALSE
SAS 사용자를 위한 R

객체 유형 테스트 및 확인

davismod %>%
  pull(difflow) %>%
  is.vector()
is.data.frame(davismod)
is.matrix(davismod)

 

[1] TRUE
[1] TRUE
[1] FALSE
SAS 사용자를 위한 R

객체 유형 변환 - 강제 변환

davismod %>%
  pull(difflow) %>%
  head()
[1] FALSE FALSE TRUE FALSE FALSE TRUE
  • R에는 as.xxx() 함수가 많습니다
  • 한 객체 유형을 다른 유형으로 변환
  • 논리를 숫자로 변환
davismod %>%
  pull(difflow) %>%
  as.numeric() %>%
  head()
[1] 0 0 1 0 0 1
SAS 사용자를 위한 R

객체 유형 변환 - 강제 변환

davismod %>%
  select(weight, height) %>%
  head(4)
  weight height
1     77    182
2     58    161
3     53    161
4     68    177

행렬로 변환하고 class() 확인

davismod %>%
  select(weight, height) %>%
  as.matrix() %>%
  class()
[1] "matrix"
SAS 사용자를 위한 R

abalone 데이터셋을 새 변수로 업데이트해 봅시다

SAS 사용자를 위한 R

Preparing Video For Download...