处理输出对象

面向 SAS 用户的 R

Melinda Higgins, PhD

Research Professor/Senior Biostatistician Emory University

summary 的输出

# 保存 summary 输出,查看 davissmry
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...