接下来,我们利用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")
1.导入数据install.packages('xslx')
library(xlsx)
Sys.setlocale("LC_ALL", "zh_cn.utf-8")
a=read.xlsx2('d:/1.xlsx',1,header=F)
2.计算平均值
数据集a中有变量:因变量y,自变量x
install.packages('Rmisc')
library(Rmisc)
单因素:求y的平均值,以x为分类变量
a1=summarySE(a,measurevar='y', groupvars=c('x'))
双因素:求y的平均值,以x1和x2为分类变量
a1=summarySE(a,measurevar='y', groupvars=c('x1','x2'))
如果是简单数据,数据集a中有变量:只有因变量y,没有自变量x。求y的平均值代码如下:
mean(a$y)
先把A、B的列宽设置好,用格式刷把其它列也刷一下,如果你的一页可以打印47行(是其它的数,就把公式里的47改一下)在C1里写公式:
=INDIRECT(CHAR(65+MOD(COLUMN(B1),2))&(ROW(A1)+INT(COLUMN(B1)/2)*47))
按住C1的填充柄将公式右拖复制,再按住填充柄下拖复制。
选定打印区域,打印。
函数说明:
CHAR(65+MOD(COLUMN(B1),2)) 生成字符串 "A" 或 "B"(偶数列为"A"奇数列为"B")。
(ROW(A1)+INT(COLUMN(B1)/2)*47 生成相应的行号。
INDIRECT() 生成字符串的引用。