数据分析之R语言

基础统计指标

指标 描述
均值(mean) 即平均数,mean=1/n*sum(X1:Xn);均值能够利用所有已知信息,但是对异常值(极小或极大值)很敏锐;
中位数(median) 排序后居于中间位置的数值,有序尺度常用;不能充分利用已知的所有标量,但不受异常值的影响
众数(mode) 出现最频繁的数值,代表分布中的高峰;名义尺度(分组数据)常用
极差(range) 最大值与最小值之差,range=max-min;直接收到异常值影响
方差(variance) 离均差(观测值与均值之间的差)平方的均值;
var=1/(n-1)*sum(Xi-mean)^2;
数据分布越分散(远离均值),方差越大;
标准差(standard deviantion) 方差的平方根,stdev=SQRT(var);
与数据本身有相同的量纲,常用;
偏差(skewness) 刻画数据在均值两侧偏差趋势的差异性
对称分布:skewness=0,mean=median=mode;
右偏分布:skewness>0,mean>median>mode;
作偏分布:skewness<0,mean<median<mode;
峰值(kurtosis) 测量分布曲线相对平滑或突起程度
kurtosis=3,正态分布(Norm distribution);
kurtosis>3,分布曲线比正太分布突起;
kurtosis<3,分布曲线比正态分布平缓

R的介绍
R是S语言的一种实现。S语言是由 AT&T贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。

R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输入,可实现分支、循环,用户可自定义功能。
R是一个免费的自由软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的,在那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。

R的特点
1.有效的数据处理和保存机制。
2.拥有一整套数组和矩阵的操作运算符。
3.一系列连贯而又完整的数据分析中间工具。
4.图形统计可以对数据直接进行分析和显示,可用于多种图形设备。
5.一种相当完善、简洁和高效的程序设计语言。它包括条件语句、循环语句、用户自定义的递归函数以及输入输出接口。
6.R语言是彻底面向对象的统计编程语言。
7.R语言和其它编程语言、数据库之间有很好的接口。
8.R语言是自由软件,可以放心大胆地使用,但其功能却不比任何其它同类软件差。
9.R语言具有丰富的网上资源

R函数

基本函数c(),length(),mode(),rbind(),cbind()

> x1=c(2,4,6,8,0)//指定非连续值
> x1
[1] 2 4 6 8 0
> x2=c(1:5)//指定1-5的连续值
> x2
[1] 1 2 3 4 5
> length(x1)//长度
[1] 5
> mode(x1)//x1中的向类型
[1] "numeric"
> rbind(x1,x2)//按行绑定[,1] [,2] [,3] [,4] [,5]
x1    2    4    6    8    0
x2    1    2    3    4    5
> cbind(x1,x2)//按列绑定x1 x2
[1,]  2  1
[2,]  4  2
[3,]  6  3
[4,]  8  4
[5,]  0  5

函数mean( ), sum( ), min( ), max( ), var( ), sd( ), prod( )

> x=c(1:50)
> mean(x)//平均值
[1] 25.5
> sum(x)//和
[1] 1275
> max(x)//最大值
[1] 50
> min(x)//最小值
[1] 1
> var(x)//方差
[1] 212.5
> prod(x)//乘积
[1] 3.041409e+64
> sd(x)//标准差
[1] 14.57738
> median(x)//中值
[1] 25.5

在线文档查看

help()

向量产生

a=1:20*2+1  //连续1-20的元素x2+1
> a[1]  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41
> a[1:5] //1-5元素
[1]  3  5  7  9 11
> a[a<20] //数组中小于20的
[1]  3  5  7  9 11 13 15 17 19
> a[a>20][1] 21 23 25 27 29 31 33 35 37 39 41

seq函数

> seq(5,20)//根据最小值、最大值和默认step为1,生成向量[1]  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
> seq(5,20,by=2)//步长为2
[1]  5  7  9 11 13 15 17 19
> seq(5,20,length=10)//产生length个向量[1]  5.000000  6.666667  8.333333 10.000000 11.666667 13.333333 15.000000[8] 16.666667 18.333333 20.000000

letters字母生成

> letters[1:26]//生成26个字母[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"

which函数

> a[1]  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41
> which.max(a)//最大值index
[1] 20
> a[which.max(a)]
[1] 41
> which.min(a)//最小值
[1] 1
> which(a==5)//条件等于5的索引
[1] 2
> which(a<5)
[1] 1
> which(a>35)
[1] 18 19 20

rev(),sort函数

> rev(a)//倒叙[1] 41 39 37 35 33 31 29 27 25 23 21 19 17 15 13 11  9  7  5  3
> sort(a)//排序[1]  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41

生成矩阵matrix(),t()

> a1=c(1:12)
> matrix(a1,nrow=3,ncol=4) //3行 4列,默认一列一列的排[,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> matrix(a1,nrow=4,ncol=3)[,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
[4,]    4    8   12
> matrix(a1,nrow=3,ncol=4,byrow=T)//3行4列,选择一行一行排[,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
> a=matrix(a1,nrow=3,ncol=4)
> a[,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> t(a)//转置数据框,将a3x4矩阵转变为4x3[,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
[4,]   10   11   12
> b=a
> a+b//矩阵相加[,1] [,2] [,3] [,4]
[1,]    2    8   14   20
[2,]    4   10   16   22
[3,]    6   12   18   24
> a-b//矩阵相减[,1] [,2] [,3] [,4]
[1,]    0    0    0    0
[2,]    0    0    0    0
[3,]    0    0    0    0
> a*b//矩阵相乘[,1] [,2] [,3] [,4]
[1,]    1   16   49  100
[2,]    4   25   64  121
[3,]    9   36   81  144

diag()提取或替换一个矩阵的对角线,或构造一个对角矩阵

> diag(a)//提取对角线
[1] 1 5 9
> a[,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> diag(diag(a))//构造一个对角矩阵[,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    5    0
[3,]    0    0    9

矩阵求逆,函数rnorm( ), solve( )

> a=matrix(rnorm(16),4,4)
> a[,1]       [,2]      [,3]        [,4]
[1,] -1.20058607 -1.7318530 0.6656059  0.08484915
[2,]  0.71681869 -0.8410650 0.9143067 -0.50947162
[3,]  0.24770267 -0.9330893 0.3623950  0.87174384
[4,]  0.02684931 -0.3514035 0.7194233  0.27227025
> solve(a)//逆矩阵[,1]         [,2]       [,3]       [,4]
[1,] -0.42459966  0.525735065  0.5157055 -0.5350900
[2,] -0.31817546 -0.390360202 -0.5269641  1.0559258
[3,] -0.06685634  0.005190117 -0.5243511  1.7093927
[4,] -0.19212438 -0.569373435  0.6545226  0.5716597
> b=c(1:4)
> solve(a,b)//表示 求一个x1 x2 x3 x4的4元函数,结果在b中
[1] 0.03362713 1.54391505 5.20804125 2.91933550方程解析:
-1.20058607*x1 + -1.7318530*x2 + 0.6656059*x3 +  0.08484915*x4=1
0.71681869*x1 + -0.8410650*x2 + 0.9143067*x3 + -0.50947162*x4=2
0.24770267*x1 + -0.9330893*x2 + 0.3623950*x3 +  0.87174384*x4=3
0.02684931*x1 + -0.3514035*x2 + 0.7194233*x3 + 0.27227025*x4=4
得出结果:
x1,x2,x3,x4分别是0.03362713 1.54391505 5.20804125 2.91933550

矩阵的特征值与特征向量

> a=diag(4)+1
> a[,1] [,2] [,3] [,4]
[1,]    2    1    1    1
[2,]    1    2    1    1
[3,]    1    1    2    1
[4,]    1    1    1    2
> a.e=eigen(a,symmetric=T)
> a.e
eigen() decomposition
$values//特征值
[1] 5 1 1 1$vectors//特征向量[,1]       [,2]       [,3]       [,4]
[1,] -0.5  0.8660254  0.0000000  0.0000000
[2,] -0.5 -0.2886751 -0.5773503 -0.5773503
[3,] -0.5 -0.2886751 -0.2113249  0.7886751
[4,] -0.5 -0.2886751  0.7886751 -0.2113249

数据框frame

> x1=c("lee","llun")
> x2=c(18,25)
> x=data.frame(x1,x2)
> xx1 x2
1  lee 18
2 llun 25
> data.frame('姓名'=x1,'年龄'=x2)姓名 年龄
1  lee   18
2 llun   25

画图

函数plot

plot(x)

文本文件读取

> read.table("aa.txt")//header:是否将第一行作为头V1 V2
1 1233 23
2   32 34

剪切板

> read.table("clipboard",header=T)//header:是否将第一行作为头T1 T2
1 1233 23
2   32 34

excel文件读取

> read.table("bb.prn",header=T)商品 价格
1   皮衣  600
2 羽绒服  900

RODBC读取

> z<-odbcConnectExcel("bb.xlsx")
> (w<-sqlFetch(z,"Sheet1"))商品 价格
1   皮衣  600
2 羽绒服  900

循环语句

> for(i in 1:5){a[i]=i*2+3}
> a
[1]  5  7  9 11 13
> a[1]=5
> i=1
> while(a[i]<15){i=i+1;a[i]=a[i-1]+2}
> a
[1]  5  7  9 11 13 15

外部R脚本

source()函数加载外部脚本,外部脚本显示值在控制台需要print()函数

分布函数

正态分布函数rnorm()

round(rnorm(100,mean=80,sd=7))//产生100个平均值 标准差7

泊松分布函数rpois()

指数分布函数rexp()

Gamma分布函数rgamma()

均匀分布函数runif()

runif(100,min=80,max=100)

二项分布函数rbinom()

几何分布函数rgeom()

数据存储:

write.table(x,file="",col.names=F,row.names=F,sep=" ")

平均分计算:

mean(x)//平均值

colMeans(x) //列平均值

colMeans(x)[c(“x1”,“x2”)]//指定列平均值

apply(x,2,mean)//平均值

apply(x,2,max)//最大值

apply(x,2,min)//最小值

apply(x[c(“x1”,“x2”,“x3”)],1,sum)指定列统计每一行 1为行 2为列

R语言学习之路——进入R的大门相关推荐

  1. R语言学习以及我对R语言的理解。

    关于对R语言的理解: 这里我讲一下自己对于R语言的理念,我不想重复那些已经被转播烂了的概念解释.发展历史.及其功能简介. R语言是统计学家开发的,出生之初就决定了它的使命是统计计算和数据可视化,这算是 ...

  2. R语言学习笔记(1):R是什么

    1. R初窥 从CRAN(The Comprehensive R Archive Network)cran.r-project.org-mirrors.html中选择一个镜像,然后下载合适的安装包(R ...

  3. R语言学习笔记︱Echarts与R的可视化包——地区地图

    笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...

  4. R语言学习笔记 07 Probit、Logistic回归

    R语言学习笔记 文章目录 R语言学习笔记 probit回归 factor()和as.factor() relevel() 案例11.4复刻 glm函数 整理变量 回归:Logistic和Probit- ...

  5. R语言学习笔记 06 岭回归、lasso回归

    R语言学习笔记 文章目录 R语言学习笔记 比较lm.ridge和glmnet函数 画岭迹图 图6-4 <统计学习导论 基于R语言的应用>P182 图6-6<统计学习导论 基于R语言的 ...

  6. R语言学习-第二天-R的绘图

    R语言学习-第二天-用R绘图 R语言绘图 1.绘图函数 1.直方图 2.散点图 3.柱状图.饼图 4.箱线图 5.星相图 6.茎叶图.Q-Q图 7.热力图 8.向日葵散点图 9.散点图集 10.三维作 ...

  7. r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数

    在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...

  8. R语言学习 - 热图简化

    前面推出过热图绘制和热图美化,现在来一个函数绘制热图的简化方式.文后更有不用写代码的在线工具可用. R语言 - 基础概念和矩阵操作 R语言 - 热图简化 R语言 - 热图绘制 (heatmap) R语 ...

  9. R语言学习 - 热图美化 (数值标准化和调整坐标轴顺序)

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.在线绘图.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞 ...

最新文章

  1. 贝索斯专访:亚马逊帝国大规模业务转型的秘诀
  2. [leetcode笔记] Remove Duplicates from Sorted List II
  3. 安装VMWare时 the system administrator has set policies to prevent this installation
  4. 异或运算_专题 | 异或运算的一些应用
  5. python教程1003python教程_哎哟喂啊
  6. PHP 设计模式六大原则
  7. 【渝粤教育】国家开放大学2018年春季 0675-22T中级财务会计(2) 参考试题
  8. 软件工程——个人课程总结
  9. 【转】“线程间操作无效: 从不是创建控件的线程访问它”
  10. #6281. 数列分块入门 5
  11. 全国计算机一级考试宝典,计算机一级考试宝典
  12. java 枚举类型_java 枚举类型(翻译自Java Tutorials)
  13. (Foxit PDF阅读器设置)禁止改变当前缩放比例,改善书签跳转阅读体验
  14. 面向对象设计 腾讯代码案例 学习人家的模式和格式
  15. Linux ALSA声卡驱动之二:声卡的创建
  16. 已知 char w; int x; float y; double z;,则表达是 w*x+z-y 结果的类型是
  17. matlab高通滤波器除噪声,基于MATLAB的FIR滤波器的设计及应用(信号去噪).doc
  18. 【PM模块】基础概念简介
  19. 触摸屏设置禁用手指缩放机双击放大功能
  20. 数字图像处理编程入门

热门文章

  1. python如何输出16进制_python 以16进制打印输出的方法
  2. Java教程:Java字符串拼接(连接)
  3. 跟着团子学SAP PS—项目的计划收入 CJ42/CJR2
  4. 文献翻译 Deep Learning
  5. SV_LAB学习02篇 LAB2
  6. 前端HTML(四)—— 使用CSS+JS完成雪花飘
  7. Verilog-signed and unsigned
  8. springboot高级篇及springboot1.5转springboot2.17所遇到的坑
  9. 三菱FX5U多冲一切追剪程序
  10. swfupload组件图片上传失败问题分析与总结