R语言总结分析.docx
《R语言总结分析.docx》由会员分享,可在线阅读,更多相关《R语言总结分析.docx(26页珍藏版)》请在冰豆网上搜索。
R语言总结分析
Lec00
##八、关于Markdown语言的简洁说明
1.一个#表示一级标题,二个#表示二级标题,依次类推;
2.空一段表示断行,而不是简单的敲一个回车表示断行;
3.*斜体*(一对星号)表示斜体,**加粗**(一对双星号)表示加粗;
4.Markdown语言兼容Latex语言。
可处理数学公式
Lec01
##1数据的基本形式
所有R处理的内容都叫对象(object)。
进行统计分析时,我们的对象自然就是数据(data)。
在R中,数据的基本格式分为以下5种:
标量(scalar),向量(vectors),矩阵(matrices),数据框(dataframes),因子(factors),及列表(lists)。
●所谓**向量**,就是一维的数值型、字符型或逻辑型数据的一维数组
a<-c(1,2,3,4,-2,-5,6)#数值型,其中c表示concatenate(连结,串联),c()称为combinefunction,<-表示赋值
a#显示向量a
b<-c("one","two","three")#字符型,需要使用“”
c<-c(TRUE,TRUE,TRUE,FALSE,TRUE,FALSE)#逻辑型
d<-c(1:
5)#:
表示产生一个系列,元素默认按列填充
●矩阵是一个二维数组,但要求其中的每个元素具有相同的模式(同为数值型、字符型或逻辑型)注意:
每个元素的数据格式必需相同.
y<-matrix(1:
20,nrow=4,ncol=5)#定义4行5列
y[1,];y[,2];y[1,2];y[1,c(2,3)];y[c(2,3),2]#显示矩阵y内的不同元素
####定义名为matrix1的2×2矩阵,定义行列名,按行填充
cells<-c(1,-2,3,-4);rnames<-c("R1","R2");cnames<-c("C1","C2")
matrix1<-matrix(cells,nrow=2,ncol=2,byrow=TRUE,dimnames=list(rnames,cnames))
●数组(Array):
三维或高维数据。
数组与矩阵类似,但维度高于2维。
array()函数的格式为:
_array(vector,dimensions,dimnames)_,其中
*vector表示向量,
*dimensions表示每个维度下的向量“长度”(元素个数),
*dimnames表示维度名。
dim1<-c("A1","A2");dim2<-c("B1","B2","B3");dim3<-c("C1","C2","C3","C4")
z<-array(1:
24,c(2,3,4),dimnames=list(dim1,dim2,dim3))#c(2,3,4)中的数字,表示dim1,dim2,dim3的长度
●数据框(dataframe):
包含不同类型数据的数据。
数据框的数据形式,就是常见的excel,spss,stata中的数据表单形式,它可以用来同时储存多种不同模式的数据。
数据框函数:
*data.frame()function*,其格式如下:
*mydata<-data.frame(col1,col2,col3,…)*
其中,col1,col2,col3,…是任意类型的列向量名(需提前定义)。
patientID<-c(1,2,3,4)#数值型向量;age<-c(25,34,28,52)#数值型向量;diabetes<-c("Type1","Type2","Type1","Type1")#字符型;status<-c("Poor","Improved","Excellent","Poor")#字符型
patientdata<-data.frame(patientID,age,diabetes,status,row.names=patientID)#以上述向量,建立数据框
上述命令中,row.names=patientID为指定“实例标识符”(caseidentifier)。
设定此选项后,使用row.names(patientdata)命令,就可以以patientID为标记输出各个体的编号(ID)。
####观测与变量
patientdata[1:
2]#显示数据框中的第1至2列(第1至2个变量)
patientdata[2,4]#显示第2行第4列的数据
patientdata[c("diabetes","status")]#显示数据框中的指定列(变量)
patientdata$age#“$”符号表示使用数据框中的某一变量,结果以行方式呈现。
一般地,“A$x”表示“数据据A中的变量x”.
####绑定数据框
每次使用数据框时,都使用“$”的方式,显得太过麻烦。
为此,可事先绑定某一数据,此后即使省略这一符号的方式使用数据框中的变量,待分析完这一数据框后再解除绑定。
命令:
attach,detach
attach(mtcars)#绑定数据mtcars,该数据为R自带数据
str(patientdata)#str()函数用于给出数据数据对象的信息
summary(mpg)#提供mpg变量的五数概要(Fivenumbersummary)即最小值(Min)、第1四位数(1stQuartile)、中位数(Median)、第3四分位数(3rdQuartile)和最大值(Max)。
plot(mpg,disp)#绘制mpg,disp两个变量的二维散点图
detach(mtcars)#解除绑定
attach命令的缺陷在于,如果同时使用了不同的数据框,或者变量的命名有重复,则会出现错误。
为避免这一不足,可使用with()命令进行数据框绑定。
with(mtcars,{summary(mpg,disp,wt)plot(mpg,disp)plot(mpg,wt)})
只要保证输入的命令在with()函数内,则不论前面是否有定义重名的变量,均可以只针对with()内的数据框进行处理。
●因子(factor)在R中,定类数据(nominaldata)和定序数据(ordinaldata)称为因子。
R中使用factor()函数储存因子型数据。
diabetes<-c("Type1","Type2","Type1","Type1")#定义定类向量diabetes
diabetes<-factor(diabetes)#将向量diabetes储存为因子型数据,默认按按字母序进行分类
status<-c("Poor","Improved","Excellent","Poor")
status<-factor(status,ordered=TRUE)#按字母序将定序向量status定义为因子型数据,默认按字母序进行从低至高的排序,并用1、2、3……等正整数形式储存。
status<-factor(status,order=TRUE,levels=c("Poor","Improved","Excellent"))#使用levels()命令,指定向量的从低至高次序,并用1、2、3……等正整数形式储存。
或者:
status<-factor(status,order=TRUE,levels=c("Poor","Improved","Excellent"))#使用levels()命令,指定向量的从低至高次序,并用1、2、3……等正整数形式储存。
●列表(List):
复杂的数据。
列表(List)是R中最复杂的数据结构,它是一系列数据对象的组合体,可将不同类型的数据对象置于同一数据名之下。
其函数为list(),格式如右:
mylist<-list(object1,object2,…)
g<-"MyFirstList";h<-c(25,26,18,39);j<-matrix(1:
10,nrow=5);k<-c("one","two","three")
mylist<-list(title=g,ages=h,j,k)
mylist[[2]]#显示列表中第2个数据对象
mylist[["ages"]]#显示指定名称的数据对象
##数据的导入
⏹###直接输入
smalldata<-data.frame(age=numeric(0),gender=character(0),weight=numeric(0))
#smalldata<-edit(smalldata)#在编辑器中编辑数据
其中,类似age=numeric(0)表示建立指定模式、但不包含实际数据的变量。
⏹###从带分隔符的文本文件中导入数据
使用read.table函数。
注意“带分隔符的文本文件”的含义csv。
grades<-read.table("students.csv",header=T,sep=",")
其中,sep=""表示分隔符的类型。
如sep="\t"表示制表符;sep=""表示空格或回车。
默认情况下,字符型变量会转变为因子。
如果不想让R这么做,那么可以设置选项stringsAsFactor=FAlSE,这可停止对此类变量的转换。
更多的内容,可使用help(read.table)了解。
⏹###导入excel数据
方法1:
间接读入法(推荐)将excel数据存为csv文件,然后再使用read.table调用。
方法2:
直接读入法(不推荐读入中文文件)如果想直接调用excel文件(2007以上),可使用read.xlsx(filename,n)函数,其中filename表示文件名(包含路径名),n表示要导入的工作表序号。
library(xlsx);students<-"D:
/xkdog/statsoft/R2014/R2014fall/students.xlsx"
students1<-read.xlsx(students,1)
提醒:
中文读入容易出现乱码,不建议直接使用此方法,而是建议使用方法1,此时读入的中文不会出现乱码。
⏹###导入spss数据
使用foreign包中的read.spss()函数或Hmisc包中的spss.get()函数读入.sav文件,推荐后面一个函数。
library(foreign)
read.spss("D:
/xkdog/statsoft/R2014/course/accidents.sav",use.value.labels=T,to.data.frame=T)#显示为dataframe格式,推荐使用
或者library(Hmisc)
spssdata<-spss.get("accidents.sav",use.value.labels=T)
⏹###导入stata数据
使用foreing包中的read.dta()函数。
library(foreign);chore<-read.dta("chore.dta")
##导出R软件中的数据
●###导出为文本文件
使用utils包中的write.table()函数,格式为write.table(x,file="",sep=""),其中x表示等写入的对象(一般指数据框或矩阵),file="用于指定待创建的