模拟产生学生名单,记录高数,英语,网站开发三科成绩,然后进行统计分析
假设有100名学生,起始学号为161304000,各科成绩取整
高数成绩为均匀分布随机函数,都在75分以上
英语成绩为正态分布,平均成绩80
网站开发成绩为正态分布,平均成绩83,标准差18,
正态分布中超过100分的成绩变成100分
生成学号、三科成绩
生成学号
num<-seq(,)
生成高数成绩
高数成绩为均匀分布随机数,都在 75 分以上
均匀分布函数:runif(n,min=0,max=1) 其中,n 为产生随机值个数(长度),min 为最小值,max 为最大值。
x1<-round(runif(,min=,max=))
生成英语成绩
英语成绩为正态分布,平均成绩 80,标准差为 7
正态分布函数:rnorm(n, mean=0,sd= 1) 其中,n 为产生随机值个数(长度) ,mean 是平均数, sd 是标准差
x2<-round(rnorm(,mean=,sd=))
生成网站开发成绩
网站开发成绩为正态分布,平均成绩 83,标准差为 18。 其中大于 100 的都记为 100
x3<-round(rnorm(,mean=,sd=))
x3[which(x3>)]=
讲数据写入文本框
生成文本文件
x<-data.frame(num,x1,x2,x3)
打开数据框
de(x)
平均分
apply(x,,mean)
x4<-apply(x[c("x1","x2","x3")],,mean)
x$x4<round(x4)
x4
总分
apply(x,,sum)
x5<-apply(x[c("x1","x2","x3")],,sum)
x$x5<round(x5)
x5
最低分
apply(x,,min)
x6<-apply(x[c("x1","x2","x3")],,min)
x$x6<round(x6)
x5
最高分
apply(x,,max)
x7<-apply(x[c("x1","x2","x3")],,max)
x$x7<round(x7)
x7
在数据框中命名变量
names(x)<-c("学号","高数","英语","网站开发","平均分","总分","最低分","最高分")
重新写入数据并命名
x<-data.frame(num,x1,x2,x3,x4,x5,x6,x7)
names(x)<-c("学号","高数","英语","网站开发","平均分","总分","最低分","最高分")
将生成的数据写入文本
write.table(x,file="scores.txt",col.names=T,row.name=F,sep=" ")
b<-read.table("scores.txt",head=T)
getwd() 可查找到文件所放置目录
单例输出
学生总成绩
apply(x[c("高数","英语","网站开发")],,sum)
求成绩最高num
which.max(apply(x[c("高数","英语","网站开发")],,sum))
求成绩最高学号
x$学号[which.max(apply(x[c("高数","英语","网站开发")],,sum))]
绘图
hist(x[,],main="直方图") plot(x[,],x[,],pch=,bg="green",main="散点图",xlab="学生学号",ylab="高数成绩") barplot(x[,],main="网站开发成绩条形图") pie(:,x[,],main="高数成绩饼状图") boxplot(x[,],col=c("green","red","blue")) #箱尾图