R语言 数据透视表

Python010

R语言 数据透视表,第1张

最好先把data里的数据从char转成numeric,不带引号。

然后先弄个目标矩阵,每个位置暂时预设成0

>final<-matrix(0,12,19) #12行 19列

写个循环:

>for(i in 1:nrow(data)){ # nrow是看你的data里有多少行

>final[data[i,1],data[i,2]]<-data[i,3]#final的x坐标是data的第一列,y坐标是第二列

>}

>final<-rbind(final,colSums(final)) #最后一行是总计

>rownames(final)<- 。。。 #自己起名字

>colnames(final)<- 。。。

merge函数通过by选择合并某列的相同值。

这个包处理数据与excel包中的透视表有些类似

reshape包包含融合(melt)和重铸(cast),melt函数是将宽数据变为长数据,而cast则是将长数据变为宽数据。

melt函数就是将很宽的表融合成一列,变成很长的表,之后设定id.var=month和day就是固定搜索宽表中带有月日的列。这里我们使用airquality内置数据集作为示例。

因为初始数据集有六列数据。

但是melt函数只将前四列进行了数据融合,我这里猜测是无论什么数据集,他默认会将后两列作为ID,并且我们不用id.vars指明就不会显示。所以我们需要指明melt函数前四列作为变量值,后两列month和day作为ID。

图3和图1可以对照参考

cast函数分为dcast函数和acast函数,dcast函数用于重铸数据框,而acast函数用于重铸向量,矩阵或者数组。

指定重铸格式

这里按月份指定重铸,不知道应该对每月的数据进行何种处理则会报错。所以我们通过fun.aggregate参数指定计算函数,na.rm=T则用来计算时去除缺失值