您好,欢迎访问三七文档
注:本机选用d:/RBook/作为工作目录,可在“文件-改变工作目录”中修改R代码中“#”后边的都表示注释第二章R中的数据输入2.1R第一步基础:录入数据()一般代表着一个函数本章所有原始数据:Wing=c(59,55,53.5,55,52.5,57.5,53,55)Tarsus=c(22.3,19.7,20.8,20.3,20.8,21.5,20.6,21.5)Head=c(31.2,30.4,30.6,30.3,30.3,30.8,32.5,NA)Wt=c(9.5,13.8,14.8,15.2,15.5,15.6,15.6,15.7)2.1.2使用c函数连接数据wing=c(59,55,53.5,55,52.5,57.5,53,55)#用C()函数可使一个变量中存储多个值wing[1]59.055.053.555.052.557.553.055.0#查看输出的所有结果wing[3][1]53.5#输出变量中的第三个数据wing[1:4][1]59.055.053.555.0#输出第一到第四个数据wing[-2][1]59.053.555.052.557.553.055.0#输出除了第二个数据外的所有数据wing[1,2,3]错误于wing[1,2,3]:量度数目不对wing[-(2:5)][1]59.057.553.055.0#输出除了第二到第五个外的所有数据wing[c(1,3,5,7)][1]59.053.552.553.0#输出第1、3、5、7个数据,注意这里不能不加只写1357,否则会出错wing[wing54&wing59][1]55.055.057.555.0#显示取值范围#如何使用c函数取变量中头尾两个数据??????????????mean(wing)[1]55.0625#求均值S.win=mean(wing)#将其均值定义为另外一个变量,.也是变量名的一部分s.win错误:找不到对象's.win'#注意变量名的大小写S.win[1]55.06252.1.2.2.R中的变量名的命名因大部分的内部函数都不会以大写字母开头,所以在变量命名时使用大写,避免和一些内部函数名混淆,如head是内部函数,可以通过键入?Head的方式检测,如果出现帮助文件的话,就需要另换一个变量名了2.1.2.3.查看相应帮助文件,了解函数如何处理缺失值NA在录入NA后会导致计算结果的错误:Head=c(31.2,30.4,30.6,30.3,30.3,30.8,32.5,NA)sum(Head)[1]NA#通过查帮助文件?Head可知在向量中如果有一个缺失值的话,默认选项na.rm=FALSE,会导致R函数sum返回NA(rm代表remove)解决方法:使用na.rm=TRUEsum(Head,na.rm=TRUE)[1]216.1#此时返回剩余7个值的均值2.1.3使用c,cbind,rbind结合变量Wing=c(59,55,53.5,55,52.5,57.5,53,55)Tarsus=c(22.3,19.7,20.8,20.3,20.8,21.5,20.6,21.5)Head=c(31.2,30.4,30.6,30.3,30.3,30.8,32.5,NA)Wt=c(9.5,13.8,14.8,15.2,15.5,15.6,15.6,15.7)#定义一个BirdData的变量来存储由4个变量标记的4列数据BirdData=c(wing,Tarsus,Head,Wt)BirdData[1]59.055.053.555.052.557.553.055.022.319.720.820.320.821.520.621.531.230.430.630.330.3[22]30.832.5NA9.513.814.815.215.515.615.615.7#输出所有数据,BirdData则是一个长度为32(4*8)的单个向量现实现每个值划分为相应的变量(前8个值属于Wingcrd,以此类推)生成一个长度是32的向量,命名为Id并赋值Id=c(1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4)Id[1]11111111222222223333333344444444#输出变量名为Id的变量中的值Id向量的作用是指出具有相似Id值的观察值属于同一种形态变量当针对大数据库时,可以重复地输入值1到4,每个8次:rep:repeatId=rep(c(1,2,3,4),each=8)Id[1]11111111222222223333333344444444也可以换一种不使用符号c的表达,rep函数:Id=rep(1:4,each=8)Id[1]11111111222222223333333344444444#直接生成重复8次的1到4的数查看符号“:”的作用1到4:1:4[1]12341到101:10[1]12345678910使用seq函数:通过产生序列而生成一个向量Id=seq(5,10)[1]5678910#产生5到10的一个向量,默认公差为1Id=seq(from=1,to=4,by=1)#可通过添加by这个参数控制增速,生成1到4的数,以公差为1增长Id[1]1234Id=seq(5,50,length=5)Id[1]5.0016.2527.5038.7550.00#第一个数据是5最后一个数据是50,(长度)总共有5项,R自己算出公差Id=seq(5,50,by=2,length=10)错误于seq.default(5,50,by=2,length=10):太多参数#by和length参数不能共存,反而画蛇添足rep(Id,each=8)#每个数重复8次[1]11111111222222223333333344444444注:此类函数的使用需要提供一个单独向量和识别这组观察值的一个变量(如Id),此类函数主要包括t-检验、单因子方差分析、线性回归等以及一些作图工具,可节约时间。注意格式的规范:现将四个不含任何数值的变量(都只是名称)生成一个长度为32的向量Id包含单词wing、Tarsus、Head、Wt八次,VarNames=c(wing,Tarsus,Head,Wt)VarNames[1]wingTarsusHeadWtId=rep(VarNames,each=8)Id[1]wingwingwingwingwingwingwingwing[9]TarsusTarsusTarsusTarsusTarsusTarsusTarsusTarsus[17]HeadHeadHeadHeadHeadHeadHeadHead[25]WtWtWtWtWtWtWtWt注:若将each=去掉,就会将整个包含4个变量名的向量VarNames重复循环8次rep(VarNames,8)[1]wingTarsusHeadWtwingTarsusHeadWt[9]wingTarsusHeadWtwingTarsusHeadWt[17]wingTarsusHeadWtwingTarsusHeadWt[25]wingTarsusHeadWtwingTarsusHeadWtcbind函数与c函数类似,bind函数的作用就是将两个或多个变量合成一个矩阵(有c和b两种合的方法)Wing=c(59,55,53.5,55,52.5,57.5,53,55)Tarsus=c(22.3,19.7,20.8,20.3,20.8,21.5,20.6,21.5)Head=c(31.2,30.4,30.6,30.3,30.3,30.8,32.5,NA)Wt=c(9.5,13.8,14.8,15.2,15.5,15.6,15.6,15.7)z1=cbind(Wing,Tarsus,Head,Wt)z1WingTarsusHeadWt[1,]59.022.331.29.5[2,]55.019.730.413.8[3,]53.520.830.614.8[4,]55.020.330.315.2[5,]52.520.830.315.5[6,]57.521.530.815.6[7,]53.020.632.515.6[8,]55.021.5NA15.7中括号的使用方法:[所获取的行数,第几列]z1[,1]#假设需要访问z的第一列,其中z[,1]等价于z[1:8,1][1]59.055.053.555.052.557.553.055.0z1[2,]#访问第二行WingTarsusHeadWt55.019.730.413.8z1[1:5,1]#访问第一列的一到五行[1]59.055.053.555.052.5z1[1:4,1:3]#访问一到四行、一到三列WingTarsusHead[1,]59.022.331.2[2,]55.019.730.4[3,]53.520.830.6[4,]55.020.330.3z1[c(1,3,4),c(-1,-3)]#这里可以利用c函数来访问z中无序的列或行,这里包含了第一、第二、第四行的数据和除去第一列和第三列的数据TarsusWt[1,]22.39.5[2,]20.814.8[3,]20.315.2矩阵是数组的特殊情况,可看作是二维的数组,而数组不光是二维的,也有可能是三维、四维的使用dim函数查看z的维数:dim(z1)[1]84#这里只有8只鸟和4个形态参数变量如果所输入的下标值超过变量允许的范围,则会出现错误提示:z1[8,5]#错误于z[8,5]:下标出界rbind函数与cbind函数类似,rbind函数可以以行的形式进行整理:Wing=c(59,55,53.5,55,52.5,57.5,53,55)Tarsus=c(22.3,19.7,20.8,20.3,20.8,21.5,20.6,21.5)Head=c(31.2,30.4,30.6,30.3,30.3,30.8,32.5,NA)Wt=c(9.5,13.8,14.8,15.2,15.5,15.6,15.6,15.7)z2=rbind(Wing,Tarsus,Head,Wt)z2[,1][,2][,3][,4][,5][,6][,7][,8]Wing59.055.053.555.052.557.553.055.0Tarsus22.319.720.820.320.821.520.621.5Head31.230.430.630.330.330.832.5NAWt9.513.814.815.215.515.615.615.7which查询、选取函数:一个专门返回向量的下标(!!)(而不是具体数值)的函数Wing=c(59,55,53.5,55,52.5,57.5,53,55)which.max(Wing)#获取向量中最大数据的下标[1]1Wing[which.max(Wing)]#通过中括号[]来获取向量中最大数据的下标后显示其值[1]59which(Wing==55)#同理,获取向量中等于55的下标[1]248Wing[which(Wing==55)]#获取向量中等于55的下标后显示其值[1]555555which(Wing55)#获取向量中大于55的下标[1]16Wing[which(Wing55)]#再获取向量中大于55的下标后显示其值[1]59.057.52.1.4*使用vector函数结合数据(可用以代替c函数)生成一个长度为8,包含所有8只鸟的wingcrd数据的一个向量:W=vector(length=8)W[1]=59W[2]=55W[3]=53.5W[4]=55W[5]=52.5W[6]=57.5W[7]=53W[8]=55W[1]59.055.053.555.052.557.553.055.0W[1:4][1]59.055.053.555.0W[c(1,3,5)][1]59.053.552.5#访问W中一些特定的元素2.1.5*使用矩阵(matrix)结合数据Dmat=matrix(nrow=2,ncol=3)
本文标题:R初学者指南
链接地址:https://www.777doc.com/doc-2856593 .html