出力オブジェクトの操作

SAS ユーザーのための R

Melinda Higgins, PhD

Research Professor/Senior Biostatistician Emory University

summary の出力

# summary の出力を保存して表示
davissmry <- daviskeep %>%
  select(weight, height, bmi) %>%
  summary()
# summary 出力オブジェクトを表示
davissmry
     weight          height           bmi       
 Min.   : 39.0   Min.   :148.0   Min.   :15.82  
 1st Qu.: 55.0   1st Qu.:164.0   1st Qu.:20.22  
 Median : 63.0   Median :170.0   Median :21.80  
 Mean   : 65.3   Mean   :170.6   Mean   :22.26  
 3rd Qu.: 73.5   3rd Qu.:177.5   3rd Qu.:23.94  
 Max.   :119.0   Max.   :197.0   Max.   :36.73
SAS ユーザーのための R

summary の出力

# davissmry のクラス
class(davissmry)
# davissmry が行列かを確認
is.matrix(davissmry)
# davissmry の次元を表示
dim(davissmry)

[1] "table"

[1] TRUE

[1] 6 3
SAS ユーザーのための R

summary オブジェクトから要素を選択

# 出力の1〜2列目を表示
davissmry[,1:2]
     weight          height     
 Min.   : 39.0   Min.   :148.0  
 1st Qu.: 55.0   1st Qu.:164.0  
 Median : 63.0   Median :170.0  
 Mean   : 65.3   Mean   :170.6  
 3rd Qu.: 73.5   3rd Qu.:177.5  
 Max.   :119.0   Max.   :197.0
# 出力の4〜6行目を表示
davissmry[4:6,]
     weight          height           bmi       
 Mean   : 65.3   Mean   :170.6   Mean   :22.26  
 3rd Qu.: 73.5   3rd Qu.:177.5   3rd Qu.:23.94  
 Max.   :119.0   Max.   :197.0   Max.   :36.73
SAS ユーザーのための R

dplyr summarise の出力

# summarise の出力を保存
davissmall <- daviskeep %>%
  select(weight, height) %>%
  summarise(across(everything(), 
                   list(mean = ~mean(.x),
                        sd = ~sd(.x))))
# davissmall 出力オブジェクトを表示
davissmall
  weight_mean weight_sd height_mean height_sd
1    65.29648  13.34346    170.5879  8.948848
# davissmall の構造を確認
str(davissmall)
'data.frame':    1 obs. of  4 variables:
 $ weight_mean: num 65.3
 $ weight_sd  : num 13.3
 $ height_mean: num 171
 $ height_sd  : num 8.95
SAS ユーザーのための R

summarise 出力から要素を表示

# 平均身長の3列目を表示
davissmall[, 3]
[1] 170.5879
# 要素名 height_mean を表示
davissmall$height_mean
[1] 170.5879
SAS ユーザーのための R

dplyr group_by の出力

# group_by で性別ごとの bmi 統計を取得
davisbmisex <- daviskeep %>%
  group_by(sex) %>%
  select(bmi, sex) %>%
  summarise(across(everything(), 
                   list(mean = ~mean(.x),
                        sd = ~sd(.x))))
# 出力オブジェクトを表示
davisbmisex
# A tibble: 2 × 3
  sex   bmi_mean bmi_sd
  <fct>    <dbl>  <dbl>
1 F         21.0   2.18
2 M         23.9   3.12
# davisbmisex の構造を確認
str(davisbmisex)
tibble [2 × 3] (S3: tbl_df/tbl/data.frame)
 $ sex     : Factor w/ 2 levels "F","M": 1 2
 $ bmi_mean: num [1:2] 21 23.9
 $ bmi_sd  : num [1:2] 2.18 3.12
1 sex 変数は自動的に Factor 型としてコード化されました。
SAS ユーザーのための R

group_by 出力から要素を表示

# davisbmisex の2列目を表示
davisbmisex[, 2]
# A tibble: 2 × 1
  bmi_mean
     <dbl>
1     21.0
2     23.9
# davisbmisex の1行目を表示
davisbmisex[1,]
# A tibble: 1 × 3
  sex   bmi_mean bmi_sd
  <fct>    <dbl>  <dbl>
1 F         21.0   2.18
SAS ユーザーのための R

group_by 出力から要素を表示

# davisbmisex の sd 要素を表示
davisbmisex$bmi_sd
[1] 2.176094 3.120285
# 男性の行を抽出
davisbmisex %>%
  filter(sex == "M")
# A tibble: 1 × 3
  sex   bmi_mean bmi_sd
  <fct>    <dbl>  <dbl>
1 M         23.9   3.12
SAS ユーザーのための R

psych describe の出力

# psych::describe() の出力を davispsych に保存
davispsych <- daviskeep %>%
  select(weight, height, bmi) %>%
  psych::describe()
# davispsych 出力オブジェクトを表示
davispsych
       vars   n   mean    sd median trimmed   mad    min    max range skew kurtosis   se
weight    1 199  65.30 13.34   63.0   64.12 11.86  39.00 119.00 80.00 0.91     0.84 0.95
height    2 199 170.59  8.95  170.0  170.40 10.38 148.00 197.00 49.00 0.21    -0.38 0.63
bmi       3 199  22.26  3.01   21.8   22.08  2.55  15.82  36.73 20.91 0.91     1.91 0.21
SAS ユーザーのための R

psych describe 出力のクラスと構造

str(davispsych)
Classes ‘psych’, ‘describe’ and 'data.frame':
     3 obs. of  13 variables:
 $ vars    : int  1 2 3
 $ n       : num  199 199 199
 $ mean    : num  65.3 170.6 22.3
 $ sd      : num  13.34 8.95 3.01
 $ median  : num  63 170 21.8
 $ trimmed : num  64.1 170.4 22.1
 $ mad     : num  11.86 10.38 2.55
 $ min     : num  39 148 15.8
 $ max     : num  119 197 36.7
 $ range   : num  80 49 20.9
 $ skew    : num  0.905 0.21 0.913
 $ kurtosis: num  0.843 -0.379 1.914
 $ se      : num  0.946 0.634 0.213
SAS ユーザーのための R

psych describe 出力の要素を表示

# 切断平均を表示
davispsych$trimmed
[1]  64.12422 170.40373  22.08452
# 行2(身長)を表示
davispsych %>%
  slice(2)
  vars   n   mean   sd median trimmed   mad min max range skew kurtosis   se
1    2 199 170.59 8.95    170   170.4 10.38 148 197    49 0.21    -0.38 0.63
SAS ユーザーのための R

psych describe 出力の要素を表示

# サンプルサイズ、中央値、最小・最大を表示
davispsych %>%
  select(n, median, min, max)
         n median    min    max
weight 199   63.0  39.00 119.00
height 199  170.0 148.00 197.00
bmi    199   21.8  15.82  36.73
SAS ユーザーのための R

アワビの統計出力をカスタマイズしましょう!

SAS ユーザーのための R

Preparing Video For Download...