要求:模拟产生统计专业同学的名单(学号区分),记录数学,线代,英语三科成绩
> num <- seq(1513032001, 15130320100) #模拟100位同学
> math <- round( runif(100, min = 80, max = 100) ) #round()---产生随机数, runif()--均匀分布在min = 80 到 max = 100之间的数(100个)
> linger <- round( rnorm(100, mean = 80 , sd = 7) ) #rnorm()---正态分布在平均分=80, 标准差=7之间的数(100个)
> eng <- round( rnorm(100, mean = 83, sd = 18) )
> eng[which(eng > 100)] = 100 #eng会产生大于100的数,将大于100的数全部置为100,which(require)返回元素中满足中间要求的数下标。 # (ps:R中元素下标从 1 开始,不是 0 !!!
> scoreframe <- data.frame(num, math, linger, eng) #将 num, math,linger,eng组成数据框,数据框的语法--data.frame(obj1,obj2......);
#将数据写到文本文档之中, 在写入文件之前,最好设置一下工作空间,否则,得用 file = "D:/路径.../mark.txt" (显得麻烦,建议打开R的时候,就设置好工作空间,
# 还有路径要用 "F:/路径1/路径2/..." or “F:\路径1\路径2....”, 不能使用 "F:路径1路径2" ).
> write.table(scoreframe, file = "mark.txt", col.names = F, rol.names = F, seq = " ")
#各科平均----------只求成绩平均,学号就不用求了~
> colMean(scoreframe[ c("math", "linger", "eng") ]
> apply(scoreframe, 2, mean)
#对数据框x 在行(1), 列(2)方向作指定操作---本处是apply(scoreframe, 2(代表列), mean(求平均操作) )
> apply(scoreframe, 2, max) #求各科最高最低
> apply(scoreframe, 2, min)
> apply(scoreframe[ c("math", "linger", "eng") , 1, sum ] #求个人的总分