R之分组计算描述性统计统计量

# summary()函数提供了最小值、最大值、四分位数和数值型变量的均值,以及因子向量和逻
# 辑型向量的频数统计。你可以使用第5章中的apply()函数或sapply()函数计算所选择的任意描
# 述性统计量。对于sapply()函数,其使用格式为:sapple(x,FUN,options)
# 其中的x是你的数据框(或矩阵),FUN为一个任意的函数。如果指定了options,它们将被传递
# 给FUN。你可以在这里插入的典型函数有mean、sd、var、min、max、median、length、range
# 和quantile。函数fivenum()可返回图基五数总括(Tukey’s five-number summary,即最小值、
# 下四分位数、中位数、上四分位数和最大值

mystats<-function(x,na.omit=FALSE){
  if(na.omit)
      x<-x[!is.na(x)]
  m<-mean(x)
  n<-length(x)
  s<-sd(x)
  skew<-sum((x-m)^3/s^3)/n
  kurt<-sum((x-m)^4/s^4)/n-3
  return(c(n=n,mean=m,stdev=s,skew=skew,kurtsis=kurt))
  
}
sapply(mtcars[vars],mystats)
# 
# > sapply(mtcars[vars],mystats)
# mpg          hp          wt
# n       32.000000  32.0000000 32.00000000
# mean    20.090625 146.6875000  3.21725000
# stdev    6.026948  68.5628685  0.97845744
# skew     0.610655   0.7260237  0.42314646
# kurtsis -0.372766  -0.1355511 -0.02271075
# 
# 对于样本中的车型,每加仑汽油行驶英里数的平均值为20.1,标准差为6.0。分布呈现右偏(偏
# 度+0.61),并且较正态分布稍平(峰度0.37)。如果你对数据绘图,这些特征最显而易见。请注
# 意,如果你只希望单纯地忽略缺失值,那么应当使用sapply(mtcars[vars], mystats,
#                               na.omit=TRUE)。
install.packages("Hmisc")
library(Hmisc)
describemtcars[vars])
# pastecs包中有一个名为stat.desc()的函数,它可以计算种类繁多的描述性统计量。
stat.desc(x,basic=TRUE,desc=TRUE,norm=FALSE,p=0.95)

# 
# 其中的x是一个数据框或时间序列。若basic=TRUE(默认值),则计算其中所有值、空值、缺失
# 值的数量,以及最小值、最大值、值域,还有总和。若desc=TRUE(同样也是默认值),则计算
# 中位数、平均数、平均数的标准误、平均数置信度为95%的置信区间、方差、标准差以及变异系
# 数。最后,若norm=TRUE(不是默认的),则返回正态分布统计量,包括偏度和峰度(以及它们
# 的统计显著程度)和Shapiro–Wilk正态检验结果。
install.packages("pastecs")
library(pastecs)
state.desc(mtcars[vars])


# 
# 似乎这还不够,psych包也拥有一个名为describe()的函数,它可以计算非缺失值的数量、
# 平均数、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、值域、偏度、峰度和平均
# 值的标准误
install.packages("psych")
library(psych)
describe(mtcars[vars])


# 首先,使用:
 dfm<-melt(dataframe,measure.vars=y,id.vars=g)
# 融合数据框。其中的dataframe包含着数据,y是一个向量,指明了要进行概述的数值型变量(默
# 认使用所有变量),而g是由一个或多个分组变量组成的向量。然后使用
# 

cast(dfm,group1+grou2+....+varible~.,FUN)
# 
# 重铸数据。分组变量以+号分隔,这里的variable只取其字面含义①,而FUN是一个任意函数
# ,我们将运用数据重塑的方法来取得由变速箱类型与汽缸数形成的
# 每个亚组的描述性统计量。我们要获取的描述性统计量是样本大小、平均数和标准差
library(reshape2)
library(reshape)
dstats<-function(x){c(n=length(x),mean=mean(x),sd=sd(x))}
dfm<-melt(mtcars,measure.vars = c("mpg","hp","wt"),id.vars = c("am","cyl"))
cast(dfm,am+cyl~.,dstats)
# 
# > cast(dfm,am+cyl~.,dstats)
# am cyl  n      mean        sd
# 1  0   4  9  36.83389  38.19523
# 2  0   6 12  45.92125  51.86950
# 3  0   8 36  71.10692  90.33878
# 4  1   4 24  37.33075  36.26945
# 5  1   6  9  51.66278  63.34085
# 6  1   8  6 106.09000 151.58358

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值