歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> R語言-模擬產生統計專業學生的成績

R語言-模擬產生統計專業學生的成績

日期:2017/3/1 9:35:54   编辑:Linux編程

現在本人會以一個例子來說明R語言在統計學中的應用。模擬一個高中學生語數外三科的成績單。

首先認識兩個重要的函數,source()和print(),source()函數是用來運行R腳本的,一個R腳本保存為test.R,

在R交互式環境下通過source("test.R")來運行,print()函數打印結果。

首先每一個學生有一個學號,通過如下方式生成

代碼:

#生成學號num
num <- seq(1 : 100) + 20114300

#生成語文成績,runif表示生成分布均勻的數,最小值為min,最大值為max
chinese <- round(runif(100, min = 90, max = 150))

#生產數學成績,用正態分布。
math <- round(rnorm(100, mean = 120, sd = 10))

#如果成績大於150,則設置為150分
math[which(math > 150)] <- 150

#生成英語成績
english <- round(runif(100, min = 60, max = 150))

#將數據放入框中
grade <- data.frame(num, chinese, math, english)

#將數據寫入文件data中
write.table(grade, "data", col.names = F, row.names = F, sep = " ")

#對每一科成績求平均值,後面的參數2是對列進行操作,如果對行進行操作參數為1
means <- apply(grade[c("chinese", "math", "english")], 2, mean)

#打印每一科的平均值
print(means)

#求每一科最高分
high <- apply(grade[c("chinese", "math", "english")], 2, max)

#打印每一科的最高成績
print(high)

#求每一個同學的總分
one.sum <- apply(grade[c("chinese", "math", "english")], 1, sum)

#將單個同學的總成績寫入文件grade_sum中
write.table(one.sum, "grade_sum", col.names = F, row.names = F, sep = " ")

上面用到了正太分布和均勻分布,其實在R語言中還有其它的分布,如下

Copyright © Linux教程網 All Rights Reserved