您好,欢迎访问三七文档
Rprogram&StatisticsLingfengMaomaolingfeng2008@163.com2015.07.HangzhouRworkshopatZhejiangUniversityR语言三大作用1)海量数据整理分析2)数学统计与建模3)绘图前语:我们又不是数学专业出身,很多公式和原理没法搞明白,这里估计水很深,所以先实现也许是我们可以走的路……有些例子的东西好像和我没有关系,我不需要学。语言是系统性的,等你学会后,会发现,原来这些都是有用的……一、何为R语言二、能干什么?三、函数与对象四、基础统计与数学模型五、脚本编写六、R绘图与输出七、函数包使用OutlineSectionIR语言基础一、何为R语言•R语言是由S语言演变而来,S语言是最初由贝尔实验室完成,经历了70年代开始的S-plus语言过程•1995年由RobertGentleman和RossIhaka,编写了一种能执行S语言的软件,这就是R软件,其命令统称为R语言。R语言是个免费开源的编程软件环境。具有网络资源开放,随时通过网页帮助功能•目前R语言已经在遗传、进化、生态等领域风靡全球,其统计与作图功能已经被全世界科学家和高水平杂志接受和认可。1.1R语言简介下载R程序软件:语言安装下载完毕后直接点R-2.14.0-win.exe安装,一直默认到最后成功,初学者可选择中文版本,便于后面出错提示七、注意事项与R深度游1.3R语言的界面请打开刚才安装的R软件界面……对于一个计算机语言,我们最关心的是:1)需要输入什么数据?格式与规范2)能输出什么数据?数据计算结果与图件3)要实现,怎么办?怎么去编程二、R语言能干什么?计算机处理输入结果Exp.1数据运算与筛选Exp.2绘图与图形输出模型构建、数理统计等等等等…例子:R语言能干什么?三、对象与函数对象:顾名思义,是R中针对处理的实体,包括输入和输出的变量、向量、矩阵、列表、函数等。3.1对象1)变量(可以赋值的对象,包括因子,向量等):girl-“shopping”money-TRUEboy-555•mode(girl);mode(money);mode(boy)•[1]character•[1]logical•[1]“numeric”2)向量(vector,一维):•a-c(1:10)•a-c(A,T,C,G,A)12345678910ATCGA3)数据框:Dataframe二维,数据框里面的向量是等长的,如果没有的数据,则会自动用NA来替代,这是数据运算的核心colnamesrownames班级性别身高体重腿长手长class_1男1705610070class_1男1726810289class_1女156458788class_1男1766510592class_1女165509078class_1女168548776class_2女170579579class_2男1807211097class_2男1786410895class_2女1665110275class_3男17666105774)矩阵Matrix:是一个维度为2的向量,一个矩阵可以用matrix()函数来创建分别用matrix创建两个矩阵x1-matrix(1:6,2,3)x2-matrix5)列表List:可以将向量,矩阵等一系列的对象存储其中,就像个大仓库,没有限制,什么都可以放。用list()函数来创建,引用其中的元素用$符号,如针对我们刚才创建的两个matrix,可以放到一个list中:一般在二维矩阵循环不够用的时候,三重循环,会使用。输入命令:L1-list(A=x1,B=x2)对象类型的判别mode()class()is.numeric()#返回值为TRUE或FALSEis.logical()is.character()is.data.frame()对象类型的转化-规则很多数据运算错误是由于读进去的数据没有转换成数值导致的!!3.2赋值、外部数据读取与运算1)赋值:a-3a=3b-c(1,2,3,4,6,7,8)2)注释#:为注释符号,其后面跟随的语句和字符将不作为命令运行,只作为注释文本,便于程序认读。3)给对象取名字原则上除了保留名是随便取,但要逐步形成自己的风格和照顾到其他阅读程序人员的情绪。以简单方便为标准,注意R对大小写敏感,即Ast-3和ast-3是不一样的,是两次赋值。比如基因名可以取名,gene.name,物种数为sp.num保留名:NA,NaN,pi,LETTERS,letters……4)外部数据读取与运算R语言可以识别多种外部导入数据,包括数值类的,图形类的,其中最为常用的是csv和txt格式。例如刚才的那个excel表格,要将其数据读取进来,并将其值赋予一个变量dat,步骤如下:4)外部数据读取第一步:将excel表格转换为CSV或者txt格式的文件(请看操作)4)外部数据读取第二步:设定工作路径setwd(“E:/R讲解基本/2-练习数据”)####R就知道了从这个文件夹读取你要的文件查看路径为函数getwd()第三步:读取文件并赋予dat这个变量,当然,dat也可以自己取名成想要的名字.命令为:dat-read.csv(class_exp1.csv,header=T,row.name=1)让第一行作为列名要读取的文件名自己给的赋值对象至此,读取完成第一列作为行名或者是:read.table(“E:/R讲解基本/2-练习数据/原始个人身高体重数据,header=T,row.name=1)4)外部数据读取直接读取excel文件library(xlsx)###Excel07library(xlsReadWrite)#####03###读取xls文件setwd(E:/RProgrammsu)dat-loadWorkbook(原始个人身高体重数据.xls)getSheets(dat)dat2-readWorksheet(dat,1)##1thefirstsheet###orsheet=Sheet1###读取Excel文件需要下载JAVA安装对于已经读取到R中的这个dataframe,我们有两种引用形式:一种是利用下角标,即行列名来获取,另外一种是通过列名来引用.colnamesrownames学号班级性别身高体重腿长手长1class_1男17056100702class_1男17268102893class_1女1564587884class_1男17665105925class_1女1655090786class_1女1685487767class_2女1705795798class_2男18072110979class_2男178641089510class_2女166511027511class_3男17666105775)已读取数据的定位与引用5)已读取数据的定位与引用(1)用下标来引用exp1-dat[3,4]exp2-dat[4,5]exp3-dat[4,]exp4-dat[,3](2)通过列名来引用exp5-dat$身高其他标识:行名和列名分别作为一个向量存储,提取或者赋予行列名函数为colnames(dat)rownames(dat)5)已读取数据的定位与引用对于向量的定位:对于身高这个向量,其名字赋为学生的学号,看例子。vec1-dat[,3]names(vec1)-rownames(dat)vec1[3]注意:相比对矩阵的colnames和rownames,向量的名字函数为names(),也同时作为一个向量保存6)数据操作与运算运算符的主意事项1)运算符号的优先级{(条件A)&(条件B)||(条件C)}2)&&和||只作用于对象的第一个元素,而&和|作用于每一个函数值3)0x1这种表达,就需要改成逻辑与结构,如0x&x16)数据操作与运算eg.1输入:x1-10X2-5y-x1+x2y回车结果显示:eg.2针对刚才学生的数据,我们来计算,针对2号学生,其升高和体重的比值是多少呢?输入:height2-dat[2,3]weight2-dat[2,4]ratio-height2/weight2ratio结果显示:7)数据的输出对于R中存在的对象都可以以一定的形式写出来,如csv,txt格式,但这个只能是一维向量或者二维数组与矩阵,三维以上,稍微要变化下输出,比如把另外一维变成多个csv表,这样降一维使用。write.csv(vec1,“newdata.csv”)你想写出的对象文件名与格式显然,这种只加加减减的小孩子把戏是不够的……3.3函数函数就是R中自带或者程序包或者你自己编好的,可以方便调用的一连串代码,函数可以看成一个黑盒,只管输入,和输出,要了解一个函数的输入数据格式,通过?函数名()来实现,比如?mean()#####求平均值?add.col()#####加一列函数的格式:function(对象,选项=)mean(x,trim=0,na.rm=FALSE,...)对象:你要处理的数据;选项:调用这个函数时候需要特殊设定的参数,常规函数会一般只须遵循其缺省值。3.3函数数值计算log(x)log10(x)exp(x)sin(x)cos(x)tan(x)asin(x)acos(x)min(x)max(x)range(x)length(x)统计检验mean(x)sd(x)var(x)median(x)quantile(x,p)cor(x,y)t.test()lm(y~x)wilcox.test()kruskal.test()统计检验lm(y~f+x)lm(y~x1+x2+x3)bartlett.testbinom.testfisher.testchisq.testglm(y~x1+x2+x3,binomial)friedman.testR本身提供的运算函数3.4常规操作集合(非常重要和实用)(1)条件筛选是先对变量否满足条件进行判断,满足为TRUE,不满足为FALSE。之后再用逻辑值对向量内的元素进行筛选。Eg1.求:哪些学生身高大于170dat[,3]170输出结果[1]FALSETRUEFALSETRUEFALSEFALSEFALSETRUETRUEFALSETRUEFALSEFALSETRUETRUEFALSE我们就可以以这个作为条件对矩阵进行筛选Eg2.求:大于170的学生信息dat[dat[,3]170,]Eg3.求:一班大于170的学生信息cla1-dat[(dat[,3]170)&dat[,1]==class_1,]Eg.4求一班大于身高大于170以上的学生身高的平均值(2)排序将向量中的元素按照一定顺序排列。sort()按数值大小排序eg:sort(dat[,3])order()给出从小到大的出现序号。ord.dat-order(dat[,3])3.4常规操作集合(非常重要和实用)(3)矩阵的转置将矩阵行列进行转置.看例子命令:dat.t-t(dat)注意:如果不赋值予dat.t,那么将直接覆盖原来的dat数据,使用会很不方便,建议重新赋值。3.4常规操作集合(非常重要和实用)(4)矩阵合并rbind(a,b)##按照行来合并cbind(a,b)###按照列来合并data.frame(x1,x2)####两个等长3.4常规操作集合(非常重要和实用)(5)对字符串利用特征值进行拆分Eg.分离出中国保护物种中的属名position-regexpr(pattern=,text=species)获取特征字符,这里是空格要处理的字符串部分genera-substr(species,start=rep(1,length(species)),stop=position-1)3.4常规操作集合(非常重要和实用)(6)取唯一unique()Eg.刚才的数据总共有几种性别呢?unique(dat[,2])3.4常规操作集合(非常重要和
本文标题:R语言基础篇.
链接地址:https://www.777doc.com/doc-2856391 .html