长数据和短数据的转换在整理数据中是蛮重要的。reshape2包cast函数和tidyr包spread函数将长数据转成宽数据,reshape2包中melt函数和tidyr包gather函数将短数据转成长数据。 cast函数有dcast和acast,前者是转换为data.frame,后者是转换为array或者matrix。主要用法是:cast(data,formula,fun),这里data就是需要转换的长数据,formula的格式是rowvar1+rowvar2+....~colvar1+colvar2+........,fun的默认函数是length,如果没有fun,输出的是原本的value。 spread的用法是spread(data,key,value,fill=),data是需要转换的长数据,key是将该列的变量值转换为短数据的变量名,value是指长数据的value列的值来填充短数据各列(value只能是单个变量),fill=NA是将缺失值传递一个指定值。 melt的用法是melt(data,id.vars,measure.vars,variable.name),data是需要转换的短数据,id.vars是行变量,measure.vars是列变量,variable.name是对长数据的新变量赋名字。 gather的用法是gather(data,key,value,...),data是需要转换的短数据,key是将短数据转换的列名赋值给一个新变量的名字,value是短数据转换的列的具体值赋值给一个新变量的名字,...中还可以写上需要转换的列。 下面给出一个实例。数据一共有45个观测,6个变量,X00-X03是一天四次的测量值。 代码块library(data.table) 如果需要代码中的shuju.csv,可以留下你的邮箱~~~~~~~~ |
|