野菜团子,R语言中文社区专栏作者 博客:https://ask./blog/esperanca tidyr包,tidyverse工具箱中的改锥和锤子,哪儿不顺眼修哪里,犀利得好比找茬儿的老板,专注把数据在长和宽的形态中互转,功能类似reshape2包,本篇顺带也回顾一下reshape2包。 1. reshape2包1.1 melt函数以airquality数据为例,先把变量名全改成小写,方便之后的处理 names(airquality) <->->tolower(names(airquality)) melt函数用于宽数据转长数据,语法如下
第二个参数id用于指明需要保存的变量,第三个参数measure用于指明哪些变量,其名字都作为新生成的变量variable的因子,其取值作为新生成的变量value的取值。第三个参数不填的话,则默认除第二个参数指明的变量外,其余变量都作为第三个参数。举个例子 aqm <- melt(airquality,="">->id=c('month', 'day'), na.rm=TRUE) 1.2 cast函数类似Excel的透视表,有acast和dcast,前者返回向量或数组,后者返回数据框。用法如下
第三个参数为函数,指明要求的值,subset指明范围。不填函数的话,day、month和variable三个变量分别标示了得到的数组a的三个维度 a <- acast(aqm,="" day="" ~="" month="" ~="">-> 2. tidyr包2.1 gather函数gather函数的功能和melt函数对应,但是语法要友好得多,非常有范儿,Hadley出品,必属精品。举个例子 table4a原本的1999和2000两个变量被转换成了新变量year的因子,原来的值被储存在新变量cases中。 2.2 spread函数spread函数作用和gather相反,举例如下,经过gather和spread两个函数的操作,得到的结果和原来的数据一毛一样
2.3 separate函数恰如其名,把一列拆成多列,sep参数可以匹配正则表达式,也可以是数字,表示在该数字长度处进行拆分变量,举例如下 table3 into参数表示新生成的变量的名字,默认删除被拆分的变量,如果想要不删除的话,就设置remove参数为FALSE
2.4 unite函数unite函数就很简单了,separate函数的反向操作,多列合作一列。如下,经过separate和unite函数的双重作用,table3还是原来的模样 话说,距离上一篇笔记已经很久了 但是我还没有放弃这个专栏 就像我还没有放弃这么蠢的自己 在这里给自己和大家打打气 坚持下去 你就会发现 以后的困难还多着呢OT2 |
|