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")) #箱尾图
        

 

posted @ 2018-09-10 21:01  Cynical丶Gary  阅读(1360)  评论(0编辑  收藏  举报