数组是一个可以在两个以上的维度存储数据的R数据对象。例如 - 如果创建尺寸(2,3,4)的数组,那么创建4个矩形矩阵每2行3列。数组只能存储数据类型。使用 array()函数创建数组。它需要向量作为输入,并使用 dim 参数的值,以创建一个数组。
示例:
我们可以通过使用dimnames参数给予名称添加到数组中的行,列和矩阵。
# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c("COL1","COL2","COL3")
row.names <- c("ROW1","ROW2","ROW3")
matrix.names <- c("Matrix1","Matrix2")
# Take these vectors as input to the array.
result <- array(c(vector1,vector2),dim=c(3,3,2),dimnames = list(column.names,row.names,matrix.names))
print(result)
当我们上面的代码执行时,它产生以下结果:
1. , , Matrix1
ROW1 ROW2 ROW3
COL15 10 13
COL29 11 14
COL33 12 15
2. , , Matrix2
ROW1 ROW2 ROW3
COL15 10 13
COL29 11 14
COL33 12 15
首先,原始数据是由name(名字),class(班级),course(课程)和score(分数)组成的,将其导入R语言并存储在Mydata对象里接下来,我们利用sqldf包来处理分组汇总的问题。
由于sqldf包不是R语言自带的,所以先用以下代码安装sqldf包:
install.packages("sqldf")
然后选择“China(Beijing)”镜像站点进行安装,R语言会同时自动安装“sqldf”包的依赖包。
安装好sqldf包及其依赖包后,输入以下代码加载sqldf包:
library(sqldf)
一切准备就绪,接下来用sqldf统计每个同学的总成绩和平均分:
sqldf("select name,sum(score) as score_sum,avg(score) as score_avg from Mydata group by name")
统计每个班级的总成绩:
sqldf("select class,sum(score) as score_sum from Mydata group by class")
统计每个班级的每门课程的总成绩和平均分:
sqldf("select class,course,sum(score) as score_sum,avg(score) as score_avg from Mydata group by class,course")