R语言实战笔记--第二章 数据类型及结构

来源:互联网 发布:知乎经典好贴 编辑:程序博客网 时间:2024/05/18 06:13

第二章 创建数据

标签(空格分隔): R语言


本章的内容其实很少,很多都是需要用到的时候才会去找的东西,个人认为本章主要掌握以下两点:
数据结构、数据输入

数据结构

  重点中的重点,一切的处理都是针对数据的,没有数据就没有后续的一切
  下面先介绍概念
  首先介绍一下数据类型,有数值型,字符型,逻辑型,复数型(虚数),原生型(字节),各个类型不详细解释,另外,还有你需要分别告诉R:实例标识符是哪个(rownames,行名),名义型变量和有序型变量是哪个(factors,因子)。
  然后才是数据结构
  标量、向量、矩阵、数组、数据框和列表。
  标量
  只含有一个元素的向量,比如a<-3,g<-“U”,b<-TRUE,它们用于保存常量,即只有一个数值。
  向量
  其实就是一维数组,使用函数c()来组合向量各个元素,比如“a<-c(1,2,3,4,5)”,或者b<-c(“one”,”two”,”three”)等等,可以使用方括号来访问向量中的元素,如a[c(2,4)]就得到上面的2和4两个数字a[1:3]就能得到1,2,3三个数字,冒号在这里的意思是从左边的数到右边的数,即从1到3,它能生成一个数值序列。注意的是,一个向量只能有一个数据类型
  矩阵
  其实就是一个二维数组,使用matrix进行创建,方法是
  > mymatrix<-matrix(vector,nrow=行数,ncol=列数,byrow=T/F,dimnames=list(行名,列名))
  其中需要解释一下的可能是byrow这个,它的意思就是按行放置还是按列,比如有一个2X2的四格,你在上面放入1-4这4个数字,你是横着填,即[1324] 还是竖着填,即[1234],TRUE就是横着填,动手敲一次知道了~,行名和列名这两上使用c()函数合并填入即可,注意顺序。矩阵元素的获取使用A[i,j]来获取,省略即为整行/列提取,可以使用c()函数单独提取某几个行/列。
  数组
  这玩意可不是很好理解,我试着解释一下吧,它类似一个层次结构,维度大概就是一层一层的包含关系,拿矩阵来说,把几个矩阵合在一起,就是一个3维数组,把几个3维数组合在一起,就是一个4维数组,形象的来说,就是Excel,我们都知道,Excel里面有工作表,每个工作表都看作一个矩阵,那么,一个工作簿有n个表,对于这个工作簿来说,它就是一个三维数组,然后有一个文件夹放着很多个工作簿,对这个文件夹来说,就是一个4维数组,不知道这样说能明白不。不明白就自己想像去吧,我目前只能解释到这个程度了。
  创建方法:arr<-array(vector,dimensions,dimnames=list(c(vetor),c(vetor)……)),这个创建方法呢,和矩阵一毛一样的,只不过,它把nrow和ncol放在了dimensions里面了,并且把它扩展开来,从第1维(行)到第2维(列)到第n维(第几个文件夹)用c()函数定义它们的个数,dimnames是可靠参数,用来定义前面定义维度的标签。
  提取元素方式,同样为方括号下标方式提取,如A[1,2,3,4,5],选择第5个维度的第5个类别,第4个维度的第4个类别,第3个维度的第3个类别,第2个维度的第2个类别,第1个维度的第1个类别下的元素!如果选取的是多个数据,最终显示为第1,2个维度的矩阵,然后在上头显示维度分类~自己试~
  数据框
  Excel表格,要求每一列必须保持相同数据类型!但不要求全部列都用一样的数据类型,这点和矩阵的要求不同。解释完毕,不懂Excel的自己去看去。
  创建方法是df<-data.frame(col1,col2,col3……),col1可以使用col1<-c(1,2,3)先行赋值,此时会使用col1为列名,如果不先行赋值,它会起一个让你蛋疼的列名出来,虽然起得不错,但很长。。。很长。。。很长。。。
  数据框的数据选取,和矩阵一毛一样~还多了几种方法,如列名大法,同样呼叫方括号,但里面可以不一样了A[c(“col1”,”col2”)]其中col1,col2是列名,也可以使用A$col1这样子来把整列都抽出来。实际使用里,是不可能让你使用A这样的名称的,一定要使用一看就能知道含义的名称,比如the_brand_of_supperman_red_briefs之类,这个时候,每次提取,都要敲这么长,卒~
  还好,有attach(),detach()和with()三个函数来帮忙,简单说一下,attach()和detach()是一对,添加了就要删除,别问为什么~它就是可以把超人红底裤的牌子数据框下面每个变量(字段)都放到外面,能让你不需要输入前面长长的名字就可以使用。with()也一样,注意的是,使用attach(“object_name”)有时候会返回一些被masked的变量,这个是什么呢,就是同名变量,在attach之前就有了的,和你数据框的变量名一样的,此时,数据框内的同名变量就不能使用。注意,是数据框内的变量不能使用,而不是预先定义那个不能使用。
  with()这个函数好,with(object_name,{R语句……})这样的格式来运行,所有的一切都只在里面运行,离开了括号之外就不认帐了,像银行~当然,可以使用特殊技能”<<-“来赋值一个全局对象,就可以外面使用了,你的办银行卡一般都是全局对象来的,不是全局,你也不会去办是不~
  下面来说说上面所提到的实例标识符和因子,或者我应该看完这本书之后再回头来写总结~
  实例标识符,解释为行名,在data.frame()里面加入row.names=c(xxxx)/col1(或某一列的内容) 来定义行名。这个很好理解。
  因子,先说一下名义型和有序型是什么鬼,名义型,就是张三,李四,王五这些名字,它们之间是平等的,不分先后的;有序型,就是张三是李四的儿子,李四是王五的儿子(不管他为什么姓不一样,这些细节不重要),于是,它们就有了个顺序,无论从小到大,还是从大到小,都是有顺序的,这个时候,他们就是有序型。名义型和有序型统称因子。创建名义型因子的时候使用f<-factor(c(“T1”,”T2”,”T3”,”T1”)),于是就会自动把它存储为(1,2,3,1)这样的向量,并且会在内部把1对应”T1”,2对应”T2”,3对应”T3”。要表示它是有序型的,就需要再加入“ordered=TRUE,levels=c(“T1”,”T2”,”T3”)”参数,如果不指定levels的话,就会按字母顺序1234逐个打上去,如果指定了levels的话,就一定要全面,缺少了一个,都会被R当成缺失值处理掉。
  列表
  大杂汇,可以把上头所说的所有数据结构放到一起,用一个标签打上标记,就可以使用了。注意的是,它使用双重方括号来引用标签,后面再加一个方括号来引用标签内的数据结构,比如myList里面的有“标量”,“向量”,“矩阵”三个标签,分别存放对应的结构,那么引用的时候,使用myList[[1]]或者myList[[“标量”]]就可以得到这个标量的值,使用myList[[3]]就可以显示矩阵,使用myList[[3]][2,3]就可以显示矩阵里面2行3列的是什么鬼~
  

数据输入

  内容很多,但很多不等使,主要用到read.table命令,还有几个包,比如xlsx,RODBC什么的,到需要的时候再直接百度解决吧,狠容易的~不细说

数据标注

  这个,嗯,这个不用太在意,简单来说,两个命令,一是names,用于改变变量(字段)的名称,二是labels,用于在factor里面,改变levels的名称,比如有个gender的变量(内容是c(1,1,2,2,3)),1表示男,2表示女,3是人妖,你可以使用factor(df$gender,levels=c(1,2),labels=c(“女”,”男”)),嗯,就这样,它的内容就会变成了c(“女”,”女”,”男”,”男”,)~
  
  后记:这一章都是概念,其实也很好理解,逐渐对R的结构和定义都些了解了,使用起来也没刚接触那时候那么陌生了。继续,后面看多两章再来写总结吧,感觉那样子写起来会更全面。但也可能多了一些不应该在这个阶段出现的概念。造成混乱。

0 0
原创粉丝点击