R语言笔记-数值型变量的描述统计

文章目录

不分亚组的描述统计

MASS包中的数据集birthwt为示例。

使用向量操作计算单个变量的描述统计量

  • 单个变量统计函数计算的基本语法:统计函数(数据框$变量名)
  • 关于基本统计函数的更多内容,参见这里

计算汇总了多个变量的数据框的描述统计量:sapply()

使用dplyr包中的select,汇总数据框中的数值型变量。为防止重名导致的混淆,包名::函数名特指调用指定包内的函数。

> data(birthwt,package = "MASS")
> cont.vars<-dplyr::select(birthwt,age,lwt,bwt)

使用sapply(数据框名,统计函数名),计算该数据框内所有变量的指定描述统计结果。

> sapply(cont.vars,mean)
      age       lwt       bwt 
  23.2381  129.8148 2944.5873 
> sapply(cont.vars,sd)
       age        lwt        bwt 
  5.298678  30.579380 729.214295 
> sapply(cont.vars,min)
age lwt bwt 
 14  80 709 
> sapply(cont.vars,max)
 age  lwt  bwt 
  45  250 4990 

注意变量必须全为数值型 (预先使用select()挑选的原因)否则会报错:

> sapply(birthwt,mean)
         low          age          lwt         race 
          NA   23.2380952  129.8148148           NA 
       smoke          ptl           ht           ui 
          NA    0.1957672           NA           NA 
         ftv          bwt 
   0.7936508 2944.5873016 
Warning messages:
1: In mean.default(X[[i]], ...) : 参数不是数值也不是逻辑值:回覆NA
2: In mean.default(X[[i]], ...) : 参数不是数值也不是逻辑值:回覆NA
3: In mean.default(X[[i]], ...) : 参数不是数值也不是逻辑值:回覆NA
4: In mean.default(X[[i]], ...) : 参数不是数值也不是逻辑值:回覆NA
5: In mean.default(X[[i]], ...) : 参数不是数值也不是逻辑值:回覆NA
> sapply(birthwt,sd)
Error in var(if (is.vector(x) || is.factor(x)) x else as.double(x), na.rm = na.rm) : 
  Calling var(x) on a factor x is defunct.
  Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.

psych包:describe()

psych包下describe()可以汇总的形式计算数据框内所有变量的常见描述统计量,忽略缺失值。注意所有分类变量都会被当作数值变量处理。

> library(psych)
> describe(birthwt)
       vars   n    mean     sd median trimmed    mad
low*      1 189    1.31   0.46      1    1.27   0.00
age       2 189   23.24   5.30     23   22.90   5.93
lwt       3 189  129.81  30.58    121  126.07  20.76
race*     4 189    1.85   0.92      1    1.81   0.00
smoke*    5 189    1.39   0.49      1    1.37   0.00
ptl       6 189    0.20   0.49      0    0.08   0.00
ht*       7 189    1.06   0.24      1    1.00   0.00
ui*       8 189    1.15   0.36      1    1.07   0.00
ftv       9 189    0.79   1.06      0    0.62   0.00
bwt      10 189 2944.59 729.21   2977 2961.76 834.70
       min  max range  skew kurtosis    se
low*     1    2     1  0.80    -1.36  0.03
age     14   45    31  0.71     0.53  0.39
lwt     80  250   170  1.38     2.25  2.22
race*    1    3     2  0.31    -1.75  0.07
smoke*   1    2     1  0.44    -1.82  0.04
ptl      0    3     3  2.76     8.17  0.04
ht*      1    2     1  3.55    10.67  0.02
ui*      1    2     1  1.97     1.87  0.03
ftv      0    6     6  1.56     3.00  0.08
bwt    709 4990  4281 -0.21    -0.14 53.04

分亚组的描述统计

aggregate()

基本语法:aggregate(数据框名,by=list(变量名=数据框名$变量名),统计函数名)。若其中存在分类变量,会报错。

> aggregate(cont.vars,by=list(smoke=birthwt$smoke),mean)
  smoke      age      lwt      bwt
1    no 23.42609 130.8957 3055.696
2   yes 22.94595 128.1351 2771.919

list()中可并列多个分类变量以实现交叉分组下的统计。

> aggregate(cont.vars,by=list(smoke=birthwt$smoke,race=birthwt$race),mean)
  smoke  race      age      lwt      bwt
1    no white 26.02273 138.8409 3428.750
2   yes white 22.82692 126.3077 2826.846
3    no black 19.93750 149.4375 2854.500
4   yes black 24.10000 142.6000 2504.000
5    no other 22.36364 119.1455 2815.782
6   yes other 22.50000 124.0000 2757.167

epiDisplay包:summ()

基本语法:summ(变量名,by=数据框名$分类变量名)

> summ(birthwt$bwt,by=birthwt$smoke)
For birthwt$smoke = no 
 obs. mean     median  s.d.    min.   max.  
 115  3055.696 3100    752.657 1021   4990  

For birthwt$smoke = yes 
 obs. mean     median  s.d.    min.   max.  
 74   2771.919 2775.5  659.635 709    4238  

除了输出基本统计量之外,同时还会输出一张图,用于探索数据的趋势、离群值很方便:
《R语言笔记-数值型变量的描述统计》

psych包:describeBy()

基本语法:describeBy(数据框名,数据框名$分类变量名)

> describeBy(birthwt,birthwt$smoke)

 Descriptive statistics by group 
group: no
       vars   n    mean     sd median trimmed    mad
low*      1 115    1.25   0.44      1    1.19   0.00
age       2 115   23.43   5.47     23   23.09   4.45
lwt       3 115  130.90  28.43    124  127.62  20.76
race*     4 115    2.10   0.93      2    2.12   1.48
smoke*    5 115    1.00   0.00      1    1.00   0.00
ptl       6 115    0.12   0.38      0    0.01   0.00
ht*       7 115    1.06   0.24      1    1.00   0.00
ui*       8 115    1.13   0.34      1    1.04   0.00
ftv       9 115    0.82   0.98      1    0.68   1.48
bwt      10 115 3055.70 752.66   3100 3086.14 816.91
        min  max range  skew kurtosis    se
low*      1    2     1  1.13    -0.74  0.04
age      14   45    31  0.77     1.00  0.51
lwt      85  241   156  1.30     2.00  2.65
race*     1    3     2 -0.19    -1.82  0.09
smoke*    1    1     0   NaN      NaN  0.00
ptl       0    2     2  3.19    10.13  0.04
ht*       1    2     1  3.63    11.24  0.02
ui*       1    2     1  2.17     2.72  0.03
ftv       0    4     4  1.20     1.15  0.09
bwt    1021 4990  3969 -0.28    -0.32 70.19
--------------------------------------- 
group: yes
       vars  n    mean     sd median trimmed    mad
low*      1 74    1.41   0.49    1.0    1.38   0.00
age       2 74   22.95   5.05   22.0   22.60   5.93
lwt       3 74  128.14  33.79  120.0  123.58  22.24
race*     4 74    1.46   0.76    1.0    1.33   0.00
smoke*    5 74    2.00   0.00    2.0    2.00   0.00
ptl       6 74    0.31   0.62    0.0    0.18   0.00
ht*       7 74    1.07   0.25    1.0    1.00   0.00
ui*       8 74    1.18   0.38    1.0    1.10   0.00
ftv       9 74    0.76   1.18    0.0    0.53   0.00
bwt      10 74 2771.92 659.63 2775.5 2782.55 630.10
       min  max range  skew kurtosis    se
low*     1    2     1  0.38    -1.88  0.06
age     14   35    21  0.55    -0.73  0.59
lwt     80  250   170  1.45     2.22  3.93
race*    1    3     2  1.23    -0.16  0.09
smoke*   2    2     0   NaN      NaN  0.00
ptl      0    3     3  2.11     4.46  0.07
ht*      1    2     1  3.38     9.53  0.03
ui*      1    2     1  1.67     0.80  0.04
ftv      0    6     6  1.85     4.03  0.14
bwt    709 4238  3529 -0.28     0.23 76.68

类似于describe(),该函数会把所有分类变量都会被当作数值变量处理。

    原文作者:PUMC芋圆四号
    原文地址: https://blog.csdn.net/ethmery/article/details/109204208
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞