R语言学习详解文档格式.docx

上传人:b****6 文档编号:19025394 上传时间:2023-01-03 格式:DOCX 页数:24 大小:164.24KB
下载 相关 举报
R语言学习详解文档格式.docx_第1页
第1页 / 共24页
R语言学习详解文档格式.docx_第2页
第2页 / 共24页
R语言学习详解文档格式.docx_第3页
第3页 / 共24页
R语言学习详解文档格式.docx_第4页
第4页 / 共24页
R语言学习详解文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

R语言学习详解文档格式.docx

《R语言学习详解文档格式.docx》由会员分享,可在线阅读,更多相关《R语言学习详解文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

R语言学习详解文档格式.docx

plot(hp,mpg,pch=cyl)#马力与油耗的散点图,pch表示用字符图案画点

legend(250,30,pch=c(4,6,8),legend=c("

4cylinders"

"

6cylinders"

8cylinders"

))#做出各气缸符号的说明标记。

这里250,30是说明框的左上角位置

线形回归

z<

-lm(cyl~mpg)#将回归所有结果放入z中

cor(cyl,mpg)#汽缸数与油耗的相关系数

cor(cyl,mpg)^2#一元回归Rsquare即为相关系数的平方

残差分析

lm.res<

-lm(cyl~mpg)#将回归所有结果放入lm.res中

lm.resids<

-resid(lm.res)#提取lm.res中的残差向量

plot(lm.resids)#画残差图

hist(lm.resids)#残差的直方图

qqnorm(lm.resids)#残差的qq图

qqline(lm.resids)#残差的qq线

结束分析并退出R

detach(mtcars)#从内存中清除数据集mtcars

q()#退出R

改变内存变量

name<

-"

Carmen"

;

n1<

-10;

n2<

-100;

m<

-0.5#定义内存变量

ls()#显示所有定义的内存对象

ls(pat="

m"

)#显示内存中含m的指定对象

^m"

)#显示内存中打头字为m的指定对象

ls.str()#显示内存中所有对象的详细信息

rm(x,y)#从内存中删除对象x与y

rm(list=ls())#从内存中删除所有对象

rm(list=ls(pat="

))#从内存中删除所有打头字为m的指定对象

建立数值型向量

向量具有简单规律

seq()或”:

1:

10#建立1到10的数字向量

10-1#建立0到9的数字向量

(10-1)#建立1到9的数字向量

-seq(1,5,by=0.5)#从1到5,每次递增0.5

-seq(from=1,to=5,by=0.5)#等价于z<

-seq(1,5,by=0.5)

-seq(1,10,length=11)#从1到10,等分为11个点

-seq(1,10,length.out=11)#等价于z<

-seq(1,10,length=11)

向量具有复杂规律

-rep(2:

5,2)#2到5循环2次

5,times=2)#等价于z<

5,2)

5,rep(2,4))#等价于z<

-rep(1:

3,times=4,each=2)#数字1到3每个重复2次,共循环4次

向量没有规律

-rep(c(3,5),c(2,4))#3按后面2循环2次,5按后面4循环4次

通过键盘逐个输入

-scan()#直接输入数据,回车键输入数据,空数据表示停止输入

sequence(3:

5)#建立连着的数据,从1到3,1到4,再1到5

sequence(c(10,5))#建立连着的数据,从1到10,再从1到5

建立逻辑向量

-c(10.4,5.6,3.1,6.4,21.7)#建立数值向量x

temp<

-x>

13#建立一个x是否满足大于13的逻辑向量

函数factor()的调用格式

factor(x,levels=sort(unique(x),na.last=TRUE),labels=levels,exclude=NA,ordered=is.ordered(x))

字符型向量转换为因子

a<

-c("

green"

blue"

yellow"

-factor(a)

数值型向量转换为因子

b<

-c(1,2,3,1)

-factor(b)

字符型因子转换为数值型因子

levels(a)<

-c(1,2,3,4)

参考类似

-factor(c("

A"

B"

C"

),labels=c(1,2,3))

数值型因子转换为字符型因子

levels(b)<

low"

middle"

high"

参考

ff<

-factor(1:

3,labels=c("

))

提取向量中的元素

-seq(1:

100)#建立1:

100的数据向量,存入x

x[1:

10]#提取x的前10个元素

x[c(1,4)]#提取x的第1和第4元素

y<

-x[-(6:

10)]#去除向量中与索引向量对应的元素

提取逻辑向量

-c(42,7,64,9)#产生数值向量x

x>

10#产生x>

10是否成立的逻辑向量

x[x>

10]#取x>

10的值

x[x<

40&

10]#取x<

40且x>

10]<

-10#修改x中所有满足条件的数据为10

y=runif(100,min=0,max=1)#产生0-1上的100个均匀分布的随机数

sum(y<

0.5)#求小于0.5的元素的个数

sum(y[y<

0.5])#求小于0.5的元素的和

-x[!

is.na(x)]#求出x中的非缺失值放入向量y中

-x[(!

is.na(x))&

(x>

0)]#求出x中的大于零的非缺失值放入向量z中

建立数组

array(data,dim,dimnames)

A<

-array(a,dim=c(3,4,2))#以a中数据建立维数为(3,4,2)的数组A

具体例子

-array(1:

8,dim=c(2,2,2))#建立一个2x2x2的数组,里面放置1到8

dim(A)#求出A的维数

dimnames(A)<

-list(c("

a"

b"

),c("

c"

d"

e"

f"

))#定义数组中向量名

colnames(A)#A的列变量名

rownames(A)#A的行变量名

建立矩阵

6,c(2,3))#建立2行3列矩阵A,用1-6填入

4,c(2,3))#如果数据不够,自动循环

8,c(2,3))#建立A时,如数据多余,则自动截尾

标准矩阵命令

X<

-matrix(1,nr=2,nc=2)#建立2x2标准矩阵

-diag(3)#建立3x3的单位阵

-diag(c(10,20,30))#建立以10,20,30为对角元素的对角阵

-diag(2.5,nr=3,nc=5)#建立3X5的广义对角阵

-matrix(1:

4,2)#建立2x2的矩阵,用1-4填入

4,2,2)#等价于X<

4,2)

rownames(X)<

)#定义行名

colnames(X)<

)#定义列名

dim(X)#求出行列数

dimnames(X)#求出行列别名

4,2,4)#按列填入,不够再次循环

4,2,4,byrow=TRUE)#按行填入,不够再次循环

提取矩阵下标和元素

6,2,3)#用1到6建立一个2x3的矩阵

X[2,2]#提取X的(2,2)位的一个元素

X[2,]#提取X的第二行

X[,2]#提取X的第二列(按最小行或列数显示)

X[,2,drop=FALSE]#提取X的第二列,按原样显示

X[,c(2,3)]#提取X的第二、三列

X[-1,]#去掉第一行

X[,-2]#去掉第二列

X[,3]<

-NA#将第三列设为缺失值

X[is.na(X)]<

-1#缺失值替换为1

矩阵的运算

6,2,3)#用1到6建立一个2x3的矩阵

t(X)#转置矩阵

diag(X)#对角向量

矩阵按行或列合并

m1<

-matrix(1,nr=2,nc=2)#建立一个2x2的全1矩阵

m2<

-matrix(2,nr=2,nc=2)#建立一个2x2的全2矩阵

rbind(m1,m2)#矩阵按行合并

cbind(m1,m2)#矩阵按列合并

矩阵运算

m2*m2#矩阵按单元乘积,也即点乘

rbind(m1,m2)%*%cbind(m1,m2)#矩阵乘积1

cbind(m1,m2)%*%rbind(m1,m2)#矩阵乘积2

4,2)#建立一个2x2的1到4的行列式

det(X)#X的行列式

cov(X)#求出X各列之间的协方差矩阵

-c(1,2)#设x

-c(3,4)#设y

cor(x,y)#相关系数矩阵

求均值、中位数

-matrix(rnorm(n=12),nrow=3)#建立一个3行的12个服从标准正态分布的随机数矩阵

apply(m,MARGIN=1,FUN=mean)#按行取均值

apply(m,MARGIN=2,FUN=mean)#按列取均值

scale(m,center=T,scale=T)#中心化随机变量

row.med<

-apply(m,MARGIN=1,FUN=median)#计算矩阵m每行的中位数

sweep(m,MARGIN=1,STATS=row.med,FUN="

)#每列各自减去列中位数

建立数据集两种方法(dataframe)

x=c(42,7,64,9)#建立数据向量x

y=1:

4#建立数据向量y

1、直接法

z.df=data.frame(INDEX=y,VALUE=x)#建立一个2列变量的数据集,放入z.df

weight<

-c(70.6,56.4,80,59.5)#建立数据向量weight

adult"

team"

)#建立字符向量x

wag<

-data.frame(weight,age=x)#构建数据集,变量数据长度不同时,会自动循环填充数据

-1:

4;

y<

-2:

4#建立数据向量x,y

data.frame(x,y)#若变量长度不是一个周期,则出现错误

2、从外部数据文件读取

foo<

-read.table(file="

c:

/data/foo.txt"

header=T)

适用于数据集的函数:

attach(Puromycin)#激活数据集

summary(Puromycin)#显示主要的描述性统计量

类似的统计计算函数max(),min(),median(),var(),sd(),sum(),cov(),cor()同样适合于数据集,意义相同。

pairs(Puromycin,panel=panel.smooth)#成对数据散点图

数据集下标与子集的提取:

Puromycin[1,1]#提取第一个变量第一个观测值

Puromycin[c(1,3,5),c(1,3)]#提取数据集的一个子集(第1、3、5行观测值,第1、3列变量)

Puromycin[c(1,3,5),c("

conc"

state"

)]#等价于上述命令Puromycin[c(1,3,5),c(1,3)]

Puromycin[c(1,3,5),]#提取数据集的第1、3、5行观测值,所有列

Puromycin$conc#等价于Puromycin[,1],提取变量为conc的那列值

subset(Puromycin,state=="

treated"

&

rate>

160)#提取满足条件state为treated,rate>

16的子集

数据集中添加新变量的三种方法:

若想增加新变量iconc=1/conc:

1、基本方法

Puromycin$iconc<

-1/Puromycin$conc

2、使用with()函数

-with(Puromycin,1/conc)

3、使用transform()函数,可一次定义多个变量

Puromycin<

-transform(Puromycin,iconc=1/conc,sqrtconc=sqrt(conc))

head(Puromycin)#显示头6行数据

列表的建立:

复杂数据分析需要生成包含不同类型的对象。

R的列表可以做到

L1<

-list(1:

6,matrix(1:

4,nrow=2))#建立向量和矩阵的混合列表

L2<

-list(x=1:

6,y=matrix(1:

4,nrow=2))#建立向量和矩阵的混合列表,并各自赋名

L2$x#显示L2中的x变量

数据的存储

d<

-data.frame(obs=c(1,2,3),treat=c("

"

),weight=c(2.3,NA,9))#建立数据集

1、保存为简单的文本文件

write.table(d,file="

row.names=F,quote=F)#这里quote表示变量名不放入双引号中

2、保存为csv格式的文本文件

write.csv(d,file="

/data/foo.csv"

row.names=F,quote=F)

3、保存为R格式文件

save(d,file="

/data/foo.Rdata"

保存工作空间映像

save.image()#等价于下式

save(list=ls(all=TRUE),file="

/data/.Rdata"

数据的读取

1、使用函数read.table()

setwd("

/data"

)#设置程序自动访问目录

HousePrice<

houses.dat"

header=TRUE)

2、使用函数scan()

函数scan()比read.table()更灵活,可以指定变量的类型。

另外,scan()可以创建不同的对象:

向量、矩阵、数据集、列表等。

mydata<

-scan("

data.dat"

what=list(Sex="

"

Weight=0,Height=0))

3、使用函数read.fwf()

读取指定宽度格式的数据

-read.fwf("

data.txt"

width=c(1,4,3),col.names=c("

X"

Y"

Z"

4、读取Excel数据

1)从剪贴板读入数据。

先将Excel的文件中的数据部分选择复制到剪贴板(ctrl+c),然后用R读入

-read.delim("

clipboard"

2)使用程序包RODBC

安装程序包RODBC

在R中,按步骤“程序包-安装程序包-选取CRAN镜像服务器(可选北京的)-RODBC”

library(RODBC)#加载程序包RODBC

-odbcConnectExcel("

/data/body.xls"

)#打开Excel文件

-sqlFetch(z,"

Sheet1"

)#选择Sheet1工作单数据读入foo

close(z)#关闭Excel文件

R中数据集的读取

1)R的标准数据datasets

R自身包含了一个有100多个数据集的数据集包datasets,随着R一次性自动载入。

列出全部数据集

data()

用数据集名显示数据

Puromycin

2)专用程序包中的数据集

读取其他已安装的专用程序包中的数据,可以使用package参数

data(package="

pkname"

)#列出程序包pkname中的数据集,这里pkname只是一个已安装的程序包的代表

data(dataname,package="

)#载入程序包pkname中的数据集dataname

探索性数据分析

二项分布

n<

-20

p<

-0.2

k<

-seq(0,n)

概率函数图

plot(k,dbinom(k,n,p),type='

h'

main='

Binomialdistribution,n=20,p=0.2'

xlab='

k'

分布函数图

plot(k,pbinom(k,n,p),type='

标准正态分布

密度函数图

curve(dnorm(x,0,1),xlim=c(-5,5),ylim=c(0,0.3),col='

red'

lwd=2,lty=3)

curve(pnorm(x,0,1),xlim=c(-10,10),ylim=c(0,1),col='

lwd=2,lty=1)

直方图

从二项分布B(100,0.9)中抽取容量为N=100000的样本,画直方图

N<

-100000#建立随机数的容量

-100#建立二项分布的试验数

-0.9#建立每次成功的概率

-rbinom(N,n,p)#求出服从二项分布的随机数N个

hist(x,xlim=c(min(x),max(x)),probability=T,nclass=max(x)-min(x)+1,col='

lightblue'

Binomialdistribution,n=100,p=.9'

)#直方图

lines(density(x,bw=1),col='

lwd=2)#核密度估计图

单总体描述性统计

1、直方图

library(DAAG)#载入程序包DAAG

data(possum)#载入数据集possum

fpossum<

-possum[possum$sex=="

]#选出性别为雌的负鼠数据放入fpossum中

par(mfrow=c(1,2))#作图区域一分为二,一行两列

attach(fpossum)#加载数据集

hist(totlngth,breaks=72.5+(0:

5)*5,ylim=c(0,22),xlab="

totallength"

main="

A:

Breaksat72.5,77.5,..."

)#画直方图

hist(totlngth,breaks=75+(0:

B:

Breaksat75,80,..."

)#不同点位画直方图

2、茎叶图

stem(totlngth)

3、盒形图

boxplot(totlngth)

4、正态性检验

A)使用QQ图

qqnorm(totlngth,main="

NormalityCheckviaQQPlot"

)#画QQ图

qqline(totlngth,col='

)#画正态线

B)与正态密度函数比较

#attach(fpossum)#加载数据集

dens<

-density(totlngth)#将totlngth的基本统计量存入dens变量

xlim<

-range(dens$x);

ylim<

-range(dens$y)#选取x和y的最大值

par(mfrow=c(1,2))#将作图空间分为两个,一行两列

5)*5,xlim=xlim,ylim=ylim,probability=T,xlab="

)#画直方图

lines(dens,col=par('

fg'

),lty=2)#画核密度函数

-mean(totlngth)#计算均值

s<

-sd(totlngth)#计算标准差

curve(dnorm(x,m,s),col='

add=T)#套用正态分布图

),lty=2)#画核密度函数

C)使用经验分布函数

-sort(totlngth)#对totlgnth进行排序,存入x

-leng

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1