R语言入门小练习

时间:2023-03-10 00:58:14
R语言入门小练习

要求:模拟产生统计专业同学的名单(学号区分),记录数学,线代,英语三科成绩

> 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 ]             #求个人的总分