1,转置
使用t()函数进行转置
> cars <- mtcars[1:5,1:4]
> cars
mpg cyl disp hp
Mazda RX4 21.0 6 160 110
Mazda RX4 Wag 21.0 6 160 110
Datsun 710 22.8 4 108 93
Hornet 4 Drive 21.4 6 258 110
Hornet Sportabout 18.7 8 360 175
> #使用t()函数进行转置
> t(cars)
Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout
mpg 21 21 22.8 21.4 18.7
cyl 6 6 4.0 6.0 8.0
disp 160 160 108.0 258.0 360.0
hp 110 110 93.0 110.0 175.0
2,整合数据
2.1聚合
使用aggregate()函数对数据进行聚合
aggregate()函数有点类似sql语言中的group by 可以按照要求把数据进行聚合。然后对聚合后的数据进行求和求平均等各种操作
其格式为
aggregate(x,by,fun)
x参数表示要处理的数据的数据框或数据框中的某一个向量
by表示要进行聚合的一个或多个变量,注意这些变量要写在一个列表中,例如by=list(cyl1,gear),还可以在列表中为各组声明自定义名称例如,by=list(group.cyl=cy1,group.gears=gear)
fun参数表示对分组后的数据进行操作的函数一般为求平均,求和等。
例子
> #例子
> #保留三位小数
> options(digits=3)
> attach(mtcars)
> aggdata <- aggregate(mtcars,by=list(cyl,gear),FUN = mean,na.rm=TRUE)
> aggdata
Group.1 Group.2 mpg cyl disp hp drat wt qsec vs am gear carb
1 4 3 21.5 4 120 97 3.70 2.46 20.0 1.0 0.00 3 1.00
2 6 3 19.8 6 242 108 2.92 3.34 19.8 1.0 0.00 3 1.00
3 8 3 15.1 8 358 194 3.12 4.10 17.1 0.0 0.00 3 3.08
4 4 4 26.9 4 103 76 4.11 2.38 19.6 1.0 0.75 4 1.50
5 6 4 19.8 6 164 116 3.91 3.09 17.7 0.5 0.50 4 4.00
6 4 5 28.2 4 108 102 4.10 1.83 16.8 0.5 1.00 5 2.00
7 6 5 19.7 6 145 175 3.62 2.77 15.5 0.0 1.00 5 6.00
8 8 5 15.4 8 326 300 3.88 3.37 14.6 0.0 1.00 5 6.00
3,reshape包
reshape2包是用来重构和整合数据集的工具包
reshape2可以对数据进行融合(把所有的测量数据列融合为1列,只留下标识变量(能够唯一确定每个观测行,意思就是通过这些表示标量就能指向唯一的行))
对数据进行融合的函数为melt()其格式为
melt(data,id),data为要融合的数据,id为指定标识变量
例子
> library(reshape2)
> #融合
> #融合为把所有的测量数据列融合为1列
> #例子
> ID <- c(1,1,2,2)
> Time <- c(1,2,1,2)
> X1 <- c(5,3,6,2)
> X2 <- c(6,5,1,4)
> mydata <- data.frame(ID,Time,X1,X2)
> mydata
ID Time X1 X2
1 1 1 5 6
2 1 2 3 5
3 2 1 6 1
4 2 2 2 4
> mydata
ID Time X1 X2
1 1 1 5 6
2 1 2 3 5
3 2 1 6 1
4 2 2 2 4
> #进行融合,id表示标识变量(能够唯一确定每个测量所需的变零)
> #本例子中ID,Time表示标识变量,X1,X2表示测量变量
> md <- melt(mydata,id=c("ID","Time"))
> md
ID Time variable value
1 1 1 X1 5
2 1 2 X1 3
3 2 1 X1 6
4 2 2 X1 2
5 1 1 X2 6
6 1 2 X2 5
7 2 1 X2 1
8 2 2 X2 4
重铸
重铸使用dcast()函数进行重铸,使用提供的工时和一个(可选的)用于整合数据的函数将其重塑
其格式为
newdata <- dcast(md,formula,fun.aggregate)
其中md为已融合的数据,formulu描述了想要的最后结果,
formulu参数的格式为rowvar1 + rowvar2+… ~ colvar1 + colvar2+…
这样最后得到的数据就是以rowvar1,rowvar2,…列为列及以colvar1 ,colvar…中的元素为列的数据。
例子
> #重铸
> #使用dcast()函数进行重铸,使用提供的公式和一个(可选的)用于整合数据的函数将其重塑。其格式为
> newdata <- dcast(md,ID+Time~variable)
> newdata
ID Time X1 X2
1 1 1 5 6
2 1 2 3 5
3 2 1 6 1
4 2 2 2 4
> newdata <- dcast(md,ID~variable,mean)
> newdata
ID X1 X2
1 1 4 5.5
2 2 4 2.5
> newdata <- dcast(md,ID+variable~Time)
> newdata
ID variable 1 2
1 1 X1 5 3
2 1 X2 6 5
3 2 X1 6 2
4 2 X2 1 4