R语言学习之路——进入R的大门

数据分析之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)
> x
    x1 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为列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流光影下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值