1. 描述性统计分析

使用自带的summary()函数

> myvars <- c("mpg","hp","wt")
> summary(mtcars[myvars])mpg              hp              wt       Min.   :10.40   Min.   : 52.0   Min.   :1.513  1st Qu.:15.43   1st Qu.: 96.5   1st Qu.:2.581  Median :19.20   Median :123.0   Median :3.325  Mean   :20.09   Mean   :146.7   Mean   :3.217  3rd Qu.:22.80   3rd Qu.:180.0   3rd Qu.:3.610  Max.   :33.90   Max.   :335.0   Max.   :5.424 

使用apply()或sapply()函数计算所选择的任意描述性统计量,函数形式为:

sapply(x, FUN, options)

这里插入的典型函数有mean()、sd()、var()、min()、max()、median()、length()、range()和quantile()。函数fivenum()可返回图基五数。

基础安装并没有封装偏度和峰度的计算函数,这里手撸一个。

> 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,kurtosis=kurt))
+ }
>
> myvars <- c("mpg","hp","wt")
> sapply(mtcars[myvars], 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
kurtosis -0.372766  -0.1355511 -0.02271075

比较全面的有pastecs包,其中的describe()函数:

> library(psych)
>
> myvars <- c("mpg","hp","wt")
>
> describe(mtcars[myvars])vars  n   mean    sd median trimmed   mad   min    max  range skew kurtosis
mpg    1 32  20.09  6.03  19.20   19.70  5.41 10.40  33.90  23.50 0.61    -0.37
hp     2 32 146.69 68.56 123.00  141.19 77.10 52.00 335.00 283.00 0.73    -0.14
wt     3 32   3.22  0.98   3.33    3.15  0.77  1.51   5.42   3.91 0.42    -0.02se
mpg  1.07
hp  12.12
wt   0.17

分组计算描述性统计量

可以使用aggregate()函数来分组获取描述性统计量。

> myvars <- c("mpg","hp","wt")
>
> aggregate(mtcars[myvars], by=list(am=mtcars$am), mean)
> #使用by=list(am=mtcars$am)可以使新列被标注为am而不是Group.1am      mpg       hp       wt
1  0 17.14737 160.2632 3.768895
2  1 24.39231 126.8462 2.411000

但是aggregate()函数无法一次返回若干个统计量。一种解决的办法是使用by()函数。

by(data, INDICES, FUN)

> myvars <- c("mpg","hp","wt")
>
> 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,kurtosis=kurt))
+      }
>
> dstats <- function(x)sapply(x, mystats)
>
> by(mtcars[myvars], mtcars$am, dstats)
mtcars$am: 0mpg           hp         wt
n        19.00000000  19.00000000 19.0000000
mean     17.14736842 160.26315789  3.7688947
stdev     3.83396639  53.90819573  0.7774001
skew      0.01395038  -0.01422519  0.9759294
kurtosis -0.80317826  -1.20969733  0.1415676
---------------------------------------------------------------
mtcars$am: 1mpg          hp         wt
n        13.00000000  13.0000000 13.0000000
mean     24.39230769 126.8461538  2.4110000
stdev     6.16650381  84.0623243  0.6169816
skew      0.05256118   1.3598859  0.2103128
kurtosis -1.45535200   0.5634635 -1.1737358

也可以利用doBy()包的summaryBy()函数分组计算概述统计量。

> library(doBy)
>
> myvars <- c("mpg","hp","wt")
>
> 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,kurtosis=kurt))
+ }
>
> summary(summaryBy(mpg+hp+wt~am, data=mtcars, FUN=mystats))am           mpg.n         mpg.mean       mpg.stdev        mpg.skew        mpg.kurtosis    Min.   :0.00   Min.   :13.0   Min.   :17.15   Min.   :3.834   Min.   :0.01395   Min.   :-1.4554  1st Qu.:0.25   1st Qu.:14.5   1st Qu.:18.96   1st Qu.:4.417   1st Qu.:0.02360   1st Qu.:-1.2923  Median :0.50   Median :16.0   Median :20.77   Median :5.000   Median :0.03326   Median :-1.1293  Mean   :0.50   Mean   :16.0   Mean   :20.77   Mean   :5.000   Mean   :0.03326   Mean   :-1.1293  3rd Qu.:0.75   3rd Qu.:17.5   3rd Qu.:22.58   3rd Qu.:5.583   3rd Qu.:0.04291   3rd Qu.:-0.9662  Max.   :1.00   Max.   :19.0   Max.   :24.39   Max.   :6.167   Max.   :0.05256   Max.   :-0.8032  hp.n         hp.mean         hp.stdev        hp.skew          hp.kurtosis     Min.   :13.0   Min.   :126.8   Min.   :53.91   Min.   :-0.01423   Min.   :-1.2097  1st Qu.:14.5   1st Qu.:135.2   1st Qu.:61.45   1st Qu.: 0.32930   1st Qu.:-0.7664  Median :16.0   Median :143.6   Median :68.99   Median : 0.67283   Median :-0.3231  Mean   :16.0   Mean   :143.6   Mean   :68.99   Mean   : 0.67283   Mean   :-0.3231  3rd Qu.:17.5   3rd Qu.:151.9   3rd Qu.:76.52   3rd Qu.: 1.01636   3rd Qu.: 0.1202  Max.   :19.0   Max.   :160.3   Max.   :84.06   Max.   : 1.35989   Max.   : 0.5635  wt.n         wt.mean         wt.stdev         wt.skew        wt.kurtosis     Min.   :13.0   Min.   :2.411   Min.   :0.6170   Min.   :0.2103   Min.   :-1.1737  1st Qu.:14.5   1st Qu.:2.750   1st Qu.:0.6571   1st Qu.:0.4017   1st Qu.:-0.8449  Median :16.0   Median :3.090   Median :0.6972   Median :0.5931   Median :-0.5161  Mean   :16.0   Mean   :3.090   Mean   :0.6972   Mean   :0.5931   Mean   :-0.5161  3rd Qu.:17.5   3rd Qu.:3.429   3rd Qu.:0.7373   3rd Qu.:0.7845   3rd Qu.:-0.1873  Max.   :19.0   Max.   :3.769   Max.   :0.7774   Max.   :0.9759   Max.   : 0.1416 

2. 频数表和列联表

library(vcd)
head(Arthritis)#一维列联表
mytable <- with(Arthritis,table(Improved))
mytable#二维列联表
mytable <- xtabs(~ Treatment+Improved, data = Arthritis)
mytable#使用margin.table()和prop.table()函数分别生成边际频数和比例
margin.table(mytable,1)     #下标1指代table()语句中的第一个变量
prop.table(mytable,1)
margin.table(mytable,2)
prop.table(mytable,2)#多维列联表
mytable <- xtabs(~ Treatment+Sex+Improved, data = Arthritis)
mytable

用R语言进行基本统计分析相关推荐

  1. 当当网 R 语言学习资料统计分析

    当当网 R 语言学习资料统计分析 一.网络数据的抓取 二.数据清洗与保存 (一)工作目录的修改 (二)导入数据并修改列名 1. 交互式编辑器 2. names()函数 3. rename()函数 (三 ...

  2. R语言的基本统计分析

    通过综合案例,使用R语言掌握基本统计分析的各种指标的并掌握统计分析结果的可视化方法. 1.背景介绍 Consolidated食品公司在新墨西哥州.亚利桑那州和加利福尼亚州经营连锁超市.它举办了一个促销 ...

  3. R语言生物群落数据统计分析

    R 语言作的开源.自由.免费等特点使其广泛应用于生物群落数据统计分析.生物群落数据多样而复杂,涉及众多统计分析方法.本文以生物群落数据分析中的最常用的统计方法回归和混合效应模型.多元统计分析技术及结构 ...

  4. R语言_基本统计分析

    #基本统计分析#整体描述性统计分析,针对数值变量 attach(mtcars) opar = par(no.readnoly=TRUE) d = mtcars[c("mpg",&q ...

  5. r语言plotmds_多元统计分析R语言建模| 11 多维标度法MDS

    定义:利用客体间相似性数据去解释它们之间的空间关系的统计分析方法 多维变量--二维三维空间表示,标度到低维空间上 种类: 度量化模型:相似性数据游距离.比例尺度测得 非度量化模型:顺序量表(有序)水平 ...

  6. R语言实战(统计分析1)

    基本内容 描述型统计分析 频数表和列联表 卡方检验 相关系数和协方差 t检验 描述型统计量 首先我们以mtcars数据集为例,先看一下这个数据集前几行的内容 ,主要有英里数(mpg),马力(hp),车 ...

  7. R语言之基本统计分析

    准备工作 加载需要使用的库 library(pastecs) library(psych) library(ggm) 读取数据,使用H1N1流感数据集和波士顿房价数据集. flu <- read ...

  8. R语言与生物统计分析试题

    1.空文件夹"WCPFC"(用于存放最终输出的文件): 2.csv 文件"WCPFC 目标渔船名单",包含船名.国籍.IMO 号及 MMSI 号: 3.文件夹& ...

  9. R语言实战 - 基本统计分析(2)- 频数表和列联表

    数据: > library(vcd) > head(Arthritis)ID Treatment Sex Age Improved 1 57 Treated Male 27 Some 2 ...

最新文章

  1. POJ - 3660 Cow Contest(flod)
  2. Neuron:迄今为止最大的颗粒细胞数据,发现海马齿状回神经元可过滤并放大空间信息...
  3. 【译】Swift算法俱乐部-Boyer-Moore字符串搜索
  4. 中医移动医疗_中医之极简移动医疗
  5. 7.2 MASS批量修改数据(剪切板上传数据)
  6. Mysql 系统学习梳理_【All】
  7. c语言下列编程段的错误,C语言编程题目(有错误)
  8. 软考中级软件设计师---下午题
  9. mysql通过函数完成10的阶乘_我来做数据--如何对数据进行处理
  10. 智能汽车能否真正实现无人驾驶,为什么?
  11. 密西西比河谷州立大学:Android应用程序开发(四)
  12. 成为顶流平台后 新氧阳谋峥嵘显露
  13. java 中利用subString 截取字符串中第三个/后面的内容,并将/用代替
  14. python利用turtle库绘制正方形绕一个顶点旋转
  15. Mysql 脚本创建触发器报错 1064 42000
  16. Centos安装JDK,RPM安装JDK
  17. 在知乎逮到一个腾讯10年老测试开发,聊过之后收益良多...
  18. 关于shell编程(3):awk中的sub和gsub
  19. 电子通信类投稿期刊介绍
  20. Open-iscs源码分析之---iscsiadm.c

热门文章

  1. 本地局域网如何更改计算机名称,大师为你详解win7系统局域网计算机名称更改的方案介绍...
  2. winedt无法编译PDF
  3. Android隐私弹框
  4. linux/kali NAT网络连接修复
  5. 2022电大国家开放大学网上形考任务-社会保障学(本)非免费(非答案)
  6. Java求自然对数底e的值
  7. CSS Day-12
  8. 如何将STM32F103ZET6的工程改为STM32F103CBT6的工程
  9. 5G物联网数据采集网关-智能车间应用
  10. 管理者常犯的十个毛病(一)(余世维讲座文字整理版)