R_Studio模拟学生成绩对数据简单分析
模拟产生学生名单,记录高数,英语,网站开发三科成绩,然后进行统计分析
假设有100名学生,起始学号为161304000,各科成绩取整
高数成绩为均匀分布随机函数,都在75分以上
英语成绩为正态分布,平均成绩80
网站开发成绩为正态分布,平均成绩83,标准差18,
正态分布中超过100分的成绩变成100分
生成学号、三科成绩
生成学号
num<-seq(161304001,161304100)
生成高数成绩
高数成绩为均匀分布随机数,都在 75 分以上
均匀分布函数:runif(n,min=0,max=1) 其中,n 为产生随机值个数(长度),min 为最小值,max 为最大值。
x1<-round(runif(100,min=75,max=100))
生成英语成绩
英语成绩为正态分布,平均成绩 80,标准差为 7
正态分布函数:rnorm(n, mean=0,sd= 1) 其中,n 为产生随机值个数(长度) ,mean 是平均数, sd 是标准差
x2<-round(rnorm(100,mean=80,sd=7))
生成网站开发成绩
网站开发成绩为正态分布,平均成绩 83,标准差为 18。 其中大于 100 的都记为 100
x3<-round(rnorm(100,mean=83,sd=18)) x3[which(x3>100)]=100
讲数据写入文本框
生成文本文件
x<-data.frame(num,x1,x2,x3)
打开数据框
de(x)
平均分
apply(x,2,mean) x4<-apply(x[c("x1","x2","x3")],1,mean) x$x4<round(x4) x4
总分
apply(x,2,sum) x5<-apply(x[c("x1","x2","x3")],1,sum) x$x5<round(x5) x5
最低分
apply(x,2,min) x6<-apply(x[c("x1","x2","x3")],1,min) x$x6<round(x6) x5
最高分
apply(x,2,max) x7<-apply(x[c("x1","x2","x3")],1,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("高数","英语","网站开发")],1,sum)
求成绩最高num
which.max(apply(x[c("高数","英语","网站开发")],1,sum))
求成绩最高学号
x$学号[which.max(apply(x[c("高数","英语","网站开发")],1,sum))]
绘图
hist(x[,2],main="直方图") plot(x[,1],x[,2],pch=23,bg="green",main="散点图",xlab="学生学号",ylab="高数成绩") barplot(x[,2],main="网站开发成绩条形图") pie(1:15,x[,2],main="高数成绩饼状图") boxplot(x[2,4],col=c("green","red","blue")) #箱尾图
(如需转载学习,请标明出处)