Backend
Business
DataScienceAI
Frontend
InfoSecurity
Infrastructure
Product
ProgrammingLanguage
SoftwareEngineering

R-CheatSheet

R CheatSheet

R 语言是基于 S 语言的一种开源实现。S 语言是贝尔实验室最早开发的一种用于统计的工具,后来成为商业的 S-PLUS 软件,是一种与 SAS 和 SPSS 齐名的统计软件。R 语言的一个重要的优势就是 R 的生态,有大量的高质量的第三方的统计和算法相关的包。

# 查看帮助文档
$ help(sd)
# 查看函数示例
$ example(sd)

写好的 R 文件,可以通过 source("filename.R")的形式装载进来。可以通过 save 函数将 R 的内存数据保存到一个 Rdata 文件中。下次再通过 load()函数读取出来。

save(gun_data,file="gun_data.Rdata")

可以从 CRAN 上安装扩展包:

# 安装扩展包
install.packages("fBasics")
# 使用扩展包
library(timeDate)

文件处理

既然要处理数据,肯定要先从数据源读取数据。我们选取最简单的方式,从 csv 文件中读取。假设我们有这样一个 csv 文件:

times,total, copy
1,122.18138504,48.200

我们使用 read.csv 函数将其读到 gun

gun_data <- read.csv("gun-1128-2.csv",header=T,col.names=c("times","total","copy"))

统计

均值

> mean(gun_data3[[2]])
[1] 103.1747
> mean(gun_data4[[2]])
[1] 113.3303

中位数

均值的问题在于,如果异常值比较大,会把均值拉高或拉低。而中位数是排序后处于中间的数,不受异常值的影响。 R 语言中用 median 函数求中位数:

> median(gun_data3[[2]])
[1] 101.651

五数

所谓五数,就是最小值,25%分位值,中位数,75%分位值,最大值。 这五个数可以通过 fivenum()函数一次性求出来;连同均值,summary 函数能一次将 6 个数都求出来。

> fivenum(gun_data3[["total"]])
[1] 98.92649 100.48752 101.65097 105.94518 116.74337
> summary(gun_data3[,"total"])
Min. 1st Qu. Median Mean 3rd Qu. Max.
98.93 100.50 101.70 103.20 105.80 116.70

方差

方差是各样本值与均值的差值的平方的和,反映了数据的离散程度。

var(gun_data3[,"total"])

  • [1] 12.70904

标准差

方差的平方根是标准差。R 语言用 sd()函数求标准差

sd(gun_data3[,"total"])

  • [1] 3.564974

离差

离差是 R 中提供的一个特殊功能,它是相对于中位数的偏差的绝对值和:

mad(x) = 1/qnorm(3/4) * median(abs(x-median(x))) 离差用 mad()函数计算。

偏度 如果结果不符合正态分布,我们希望知道是向左偏还是向右偏,这个值用偏度 skewness 来表示。R 中用 skewness()函数来计算。如果值>0 为右偏,反之为左偏。

求偏度的函数,首先要通过 install.packages 来下载 fBasics 库,然后引入 timeDate 库:

library(timeDate) skewness(gun_data3[,2])

  • [1] 1.109821

    attr(,"method")

  • [1] "moment"

    skewness(gun_data4[,2])

  • [1] 2.40715

    attr(,"method")

  • [1] "moment"

    从中可以看以,这两组数据都向右偏。gun_data4 偏得更厉害。

峰度 峰度是判断这个分布是比正态分布的图更尖还是更平。 R 中用 kurtosis()函数来计算

kurtosis(gun_data3[,2])

  • [1] 0.7986081

    attr(,"method")

  • [1] "excess"

    kurtosis(gun_data4[,2])

  • [1] 7.060265

    attr(,"method")

  • [1] "excess"

    上面的两个分布都>0,说明比正态分布都要尖。