R基础知识:reshape melt cast

发布者:于晓虹发布时间:2018-04-17浏览次数:121

数据的变形处理

reshape2的精髓是把整体数据(比如数据框)打碎(melt,或说熔化),让其回到一个一个数据点的状态,不过,这个数据点是可以根据观测的id名称和变量名称定位找到的(事实上,数据框是二维的,在数据框中,根据观测id和某变量名称,即可交叉定位到某数据点)。然后,再根据观测id和变量名称的组合,随心所欲的锻造需要的数据形态(cast),中间可能有求和、求平均值之类的数据运算。形象上理解,比如一个硬的铁块,将其熔化后,想让其扁就扁,想让其圆就圆。reshape2要的就是这个结果。


数据的标准化(Scale函数)

1、数据的中心化

所谓数据的中心化是指数据集中的各项数据减去数据集的均值。

例如有数据集1, 2, 3, 6, 3,其均值为3

那么中心化之后的数据集为1-3,2-3,3-3,6-3,3-3,即:-2,-1,0,3,0


2、数据的标准化

所谓数据的标准化是指中心化之后的数据在除以数据集的标准差,即数据集中的各项数据减去数据集的均值再除以数据集的标准差。

例如有数据集1, 2, 3, 6, 3,其均值为3,其标准差为1.87

那么标准化之后的数据集为(1-3)/1.87,(2-3)/1.87,(3-3)/1.87,(6-3)/1.87,(3-3)/1.87,即:-1.069,-0.535,0,1.604,0

 

数据中心化和标准化的意义是一样的,为了消除量纲对数据结构的影响。

在R语言中可以使用scale方法来对数据进行中心化和标准化:

#限定输出小数点后数字的位数为3位

> options(digits=3) > data <- c(1, 2, 3, 6, 3)

#数据中心化

> scale(data, center=T,scale=F) [,1] [1,] -2 [2,] -1 [3,] 0 [4,] 3 [5,] 0 attr(,scaled:center) [1] 3

#数据标准化

> scale(data, center=T,scale=T) [1,] -1.06904 [2,] -0.53452 [3,] 0.00000 [4,] 1.60357 [5,] 0.00000  attr(,scaled:center) [1] 3 attr(,scaled:scale) [1] 1.8708

scale方法中的两个参数center和scale的解释:

1)center和scale默认为真,即T或者TRUE

2)center为真表示数据中心化

3)scale为真表示数据标准化