语言基础一R简介二R语言数据操作基础三R语言的可视化一R简介什么是R?(1)最受欢迎的数据分析和可视化平台之一(2)首次出现1993,2011年随大数据的爆发而流行起(3)R是一种统计绘图语言,也指实现该语言的软件。它是一种解释型语言,而不是编程语言,也就是说,输入的命令能够直接执行。为什么选择R?(1)免费、支持Windows/MacOS/Linux(2)开源。有强大的工具包,可以贡献自己的工具包(3)可以完成数据分析涉及的几乎所有步骤:数据获取数据清理数据分析结果报告发布结果下载和安装RTheComprehensiveRArchiveNetwork,简称CRAN,提供下载安装程序和应软件包。在R主页选择下载相应的版本。R程序包base:包含基本的R函数datasets:包含基本的R数据集stats:包含各类统计函数nlme:包含用于线性和非线性混合效应的建模函数graphics:包含基本图形函数lattice:包含各种格栅函数,用于高级图像的绘制cluster:包含用于各种聚类分析的函数foreign:包含读取各种格式,如SPSS、SAS等格式数据文件函数utils:包含R管理的工具函数rpart:包含建立分类回归树的函数grDevices:包含基本图形设备函数methods:包含关于R对象的方法和类的定义函数函数调用成功启动R意味着用户可在R工作空间中创建和管理R对象,调用已加载包中的函数实现对对象的管理和对相关数据的分析。用户可以通过两种方式调用函数:(1)函数名():这是一种无形式参数的函数调用,即括号中不给出任何内容。R将以默认的参数值调用并运行函数,运行结果即函数值将自动显示在R控制台中。例如:search():浏览已加载包的名称,即以无形式参数的方式调用名为search的函数。若要调用尚未加载的包中的函数,需按照“先加载,后浏览,在调用”的步骤实现。(2)函数名(形式参数列表):这是一种带形式参数的函数调用,即括号中依顺序给出了一个或多个形式参数,各形式参数之间以英文逗号隔开。例如:为了解各包中包含哪些函数、各函数的功能以及如何调用函数,可书写:library(help=“包名称”),即以带形式参数(help=“包名称”)的方式调用名为library的函数。library(help=base)若要调用尚未下载的包中的函数,需首先将相关包下载并安装好。当R启动后并处于联网环境下,步骤为:第一,指定镜像站点。第二,下载安装Installpackage(“包名称”)。第三,加载包library(“包名称”)。查看R的帮助文档最常用的方法:1菜单帮助Html帮助或者help.start():以浏览器的形式打开R的帮助文档2菜单帮助R函数帮助或者help(函数名):用于查看指定函数的帮助文档R函数帮助文档通常包括函数的功能说明(参见Description部分)、函数的调用形式(参见Usage部分)、形式参数的含义(Arguments部分)、形式参数的具体取值(Value部分)、调用示例(Examples部分)等主要内容。R的运行方式两种运行方式:第一,命令行运行;第二,程序(脚本)运行。脚本运行还可采用非交互方式运行程序,步骤:一、指定R程序所在目录为R的当前工作目录。调用getwd(),即可获得当前目录名。改变目录可在菜单栏中改变,也可以用setwd(“指定目录”)。二、运行当前工作目录中的指定R程序source(“R程序名”)。此外,程序运行方式中输出结果默认显示在控制台上,当处理的数据量较大,计算结果较多时,往往希望将计算结果输出到控制台的同时,保存到一个指定的文本文件中。为此,需在程序的第一行调用函数sink,基本书写格式为:sink(“结果文件名”,append=TRUE/FALSE,split=TRUE/FALSE)式中,结果文件一般为文本文件,默认位于当前目录下。append为TRUE表示当前文件有同名时追加到原文件后面,FLASE表示覆盖原文件内容。split为TRUE表示输出到指定文件夹的同时,仍输出到控制台,FLASE表示结果仅输出到指定文件夹。二R语言数据操作基础R语言的数据类型R语言支持的数据类型:(1)数值型(numeric):类型的取值是实数。例如a-9.11;mode(a):显示指定对象的存储类型。(2)复数(complex):取值可扩展到虚数。例如a-100+10i;mode(a)(3)逻辑(logical):取值为TRUE(T)和FALSE(F),R语言区分大小写,T和F必须大写。例如a-T;mode(a)(4)字符型(character):类型的取值是字符串。例如a-”assf”(英文双引号不可以省略);mode(a)对象及其属性R语言常用对象类型:(1)向量(vector):数据类型都可取,不允许出现不同数据类型(2)数组(array):数据类型都可取,不允许出现不同数据类型(3)矩阵(matrix):数据类型都可取,不允许出现不同数据类型(4)数据框(dataframe):数据类型都可取,不同列之间的数据类型可不同(5)列表(list):数据类型都可取,任何元素的数据类型均可不同(6)因子(factor):数据类型都可取,不允许出现不同数据类型对象及其属性固有属性:模式和长度使用mode函数可以读取对象模式,使用as.数据类型可以改变对象的模式。例如:a-100;mode(a),输出“numeric”,a-”100”;a-as.numeric(a)(转化数据类型),输出100。使用length()函数读取对象的长度属性对象的搜索和删除由于所有的对象均存储在工作空间中,一旦对象过于庞大,就会影响运行速度。需查看工作空间内现存的对象列表(ls()),并删除其中某个对象(rm(对象名列表),remove(对象名))。向量创建向量R语言使用c(元素1,元素2,元素3)来创建向量。例如:c(2,5,6,9),c(T,F,T,F),c(China,Ko,Ja”)等。重复函数rep()创建向量,例如:rep(2:5,times=4)序列函数seq()创建向量,例如:seq(from=3,to=21,by=3)“:”产生向量,例如:1:10表示1到10的数字,例如:2:30*2+1表示产生2到30的数字的基础上再乘以2再加上1。通过与向量的组合,产生更为复杂的向量。例如:rep(1:2,c(10,15))表示1重复10次,2重复15次产生字母序列letters,例如:letters[1:26]向量向量索引1、[下标]方式索引。下标始于1而非0。例如:a-c(4:6),a[1]结果4,a[-1]结果是5,6,”-1“表示除了下标为1的所有元素。2、which方式索引。通过向量内元素的数值,来得到此元素的向量下标。例如:which(a==4)结果为1,which(a4)结果为2,3。which.max和which.min用于返回数值型向量中最大和最小元素的下标,例如which.max(a)结果为3,which.min(a)结果为1.3、subset方式索引。可以方便地索引向量、矩阵以及数据框。返回的是元素,不是下标。例如:subset(a,a4&a6)结果为5。4、%in%方式索引。可以判定对象是否包含某项数据,如果存在,返回T,否则放回F。例如:a-c(11,11,12,13,14);c(11,15)%in%a结果为:TRUEFALSE向量向量的编辑向量修改只需要通过索引找到特定元素,然后直接使用-进行赋值即可。1、向量扩展R语言可对对象长度进行任意扩展。例如a-c(1,2,3);a-c(a,c(5:7))a结果为1235672、元素的删除对向量重新赋值的方式删除向量内某一元素。例如:a-c(1:4);a-a[-3]a结果为124向量向量排序1、向量正排序sort()函数:根据数值大小进行正排序。例如a-c(11:20,c(1:9));sort(a)2、向量倒排序rev()函数:根据下标进行到排序。例如a-c(1,4,2,6,8);rev(a)向量向量去重unique()函数:实现向量的去重。例如:a-c(1,2,1,4,2,4,5,1);unique(a)结果1245向量缺失值处理na.fail(向量a)函数:向量a内包含至少一个NA,返回错误,不包含任何NA,返回原有向量。例如:a-c(1,2,NA,2,3,NA);b-na.fail(a)na.omit(向量a)函数:返回删除NA后的向量。例如:b-na.omit(a)attr(na.omit(向量a),na.action):返回向量a中元素为NA的下标。is.na()函数:用于判断向量内的元素是否为NA。例如:b-!is.na(a)向量向量间操作pmin(向量1,向量2...向量n):依次比较向量1至向量n内的各元素。并把较小的元素组成新向量。例如:a-c(1,2,9,3,5);b-c(2,3,5,1,9);c-c(2,3,4,5,1);pmin(a,b,c)。结果为12411pmax(向量1,向量2...向量n):依次比较向量1至向量n内的各元素。并把较大的元素组成新向量。pmax(a,b,c)。结果为23959intersect(向量1,向量2):返回向量的交集。union(向量1,向量2):返回向量的并集。setdiff(向量1,向量2):返回向量的补集。矩阵和数组创建矩阵matrix()函数:以向量的形式输入矩阵中的全部元素,使用ncol和nrow可设置矩阵的行和列数。例如a-c(1:12);matrix(a,nrow=3,ncol=4),向量1~12的填充方式为以列为单位填充。如果想以单位填充,可以吧matrix函数的byrow参数设置为T,例如matrix(a,nrow=3,ncol=4,byrow=T)dim()函数:获取并编辑行列参数。例如:data-c(1:10);a-matrix(data);dim(a)-c(2,5);adimnames参数设置行和列的名称。例如:a-matrix(1:10,ncol=2,nrow=5,dimnames=list(c(r1,r2,r3,r4,r5),c(c1,c2)));aas.vector(矩阵):将矩阵反过来转化为向量。矩阵和数组矩阵索引1、使用行列下标来索引。例如:data-c(1:10);a-matrix(data,ncol=2,nrow=5,dimnames=list(c(r1,r2,r3,r4,r5),c(c1,c2)));a[3,2],表示矩阵a第三行第二列的元素。2、使用行和列名称来索引。例如:a[r3,c2]3、使用一维下标来索引。例如:a[1,]#以向量形式返回矩阵a第一行的所有元素。a[,1]#以向量形式返回矩阵a第一列的所有元素。矩阵和数组矩阵编辑1、矩阵合并。cbind()函数:通过列合并函数将多个已有向量合并成矩阵。例如:x1-c(1:5);x2-c(6:10);cbind(x1,x2)rbind()函数:通过行合并函数将多个已有向量合并成矩阵。例如:x1-c(1:5);x2-c(6:10);rbind(x1,x2)2、删除矩阵。删除矩阵内某行和某列的方式类似于向量,实质是对向量重新赋值。例如:data-c(1:10);a-matrix(data,ncol=2,nrow=5);a-a[-1,],删除第一行的元素。a[,-1]删除第一列的元素。矩阵和数组矩阵的运算1、一般运算。A-matrix(c(1:12),nrow=4,ncol=3);B-matrix(c(4:15),nrow=4,ncol=3,byrow=T);C-matrix(c(12:1),nrow=3,ncol=4)D-matrix(r