操作資料集與資料物件

給 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

以 mutate 計算 BMI,建立 davismod

給 SAS 使用者的 R

以 mutate 計算 BMI,建立 davismod

給 SAS 使用者的 R

以 mutate 計算 BMI,建立 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

轉換物件型別:強制轉型(coercion)

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

轉換物件型別:強制轉型(coercion)

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...