R 语言实验过程记录
实验环境:Windows 10 Home, RStudio Version 1.0.136.
实验内容:
模拟产生电商专业学生名单(学号区分),记录高数、英语、网站开发三科成绩,然后进行统计分析。假设有的100 名学生,起始学号为210222001,各科成绩取整,高数成绩为均匀分布随机数,都在75分以上。英语成绩为正态分布,平均成绩80,标准差为7。网站开发成绩为正态分布,平均成绩83,标准差为18。把正态分布中超过100分的成绩变成100分。
1. 把上述信息组合成数据框,并写到文本文件中;
2. 计算各种指标:平均分,每个人的总分,最高分,最低分(使用apply 函数);
3. 求总分最高的同学的学号;
4. 绘各科成绩直方图、散点图、柱状图丶饼图丶箱尾图(要求指定颜色和缺口);
5. 画星相图,解释其含义;
6. 画脸谱图,解释其含义,;
7. 画茎叶图、qq图。
实验实现:
1. 把上述信息组合成数据框,并写到文本文件中;
1) 生成学号
由于学号是一组连续的数值型向量,所以使用“:”(冒号)语法,“:”前后分别为起始数值和结束数值。
2) 生成高数成绩
由于高数成绩为均匀分布,成绩均在75分以上,所以使用 runif(n, min, max) 函数对 AdvMath 进行赋值,参数 n 为数据个数,min 为最小值,max 为最大值。取整函数使用 round(x, 0) 函数进行四舍五入,0代表保留到个位,同时0也为缺省值,不指定时默认该参数为0,下同。
3) 生成英语成绩
由于英语成绩为正态分布,平均成绩为80,标准差7。使用R中的正态分布函数 rnorm(n, mean, sd),参数n为数据个数,mean 为期望,sd 为标准差。
4) 生成网站开发成绩
由于网站开发成绩为正态分布,平均成绩83,标准差为18,其中成绩大于100的均计为100。正态分布函数同上,在 WebDev[] 中使用 which 语句筛选 WebDev 中大于100的数据重新赋值为100。
5) 将上述信息向量组合成数据框
数据框通过 data.frame(col1, col2, …) 创建,参数为组成数据框的各列向量。data.entry(student) 和 edit(student) 分别用来查看和编辑数据框。
6) 将数据框保存在文件中
保存数据框使用 write.table(x, filename) 函数,参数x为保存的数据框,filename 为保存的文件名称。表示将 student 数据框保存在桌面下的R文件夹下,文件名为 student.txt。
2. 计算各种指标:平均分,每个人的总分,最高分,最低分(使用 apply 函数)
1) 计算每个人的平均分
apply 函数用来对阵列行或列使用函数,平均函数为 mean,使用
生成一个包含每个学生平均成绩的数组,student[2:4] 表示计算 student 中第二列到第四列的数据,1表示对行进行操作。使用
将对平均成绩 avg 保留一位小数并将 Avg 合并到 student 中。
2) 计算每个人的总分
方法基本同上。
3) 计算每个人的最高分
4) 计算每个人的最低分
3. 求总分最高的同学的学号
求总分最高的同学的学号,应用 which,max 函数。
4. 绘制各科成绩直方图、散点图、柱状图、饼图、箱尾图(要求指定颜色和缺口)
1) 绘制各科成绩直方图
a) 高数成绩直方图
R 语言中用 hist 函数画直方图:
第一个参数 student[, 2] 表示用于显示的数据为 student 中第二列的数据,参数 main 为直方图的名称,breaks 为直方图中矩形的数量。
b) 英语成绩直方图
同上。
c) 网站开发成绩直方图
2) 绘制各科成绩散点图
a) 高数成绩散点图
散点图由函数 plot 画出,参数 x, y 分别为 x 轴和 y 轴的数据,main 为图的标题,sub 为子标题,xlab 为 x 轴标题,ylab 为 y 轴标题,cex 为点的大小,col 为颜色,pch 为形状,取值为整数 1-25,其中 pch = 1 为空心圆,21 为彩色圆,通过参数 bg 定义颜色。
b) 英语成绩散点图
同上。
c) 网站开发成绩散点图
3) 绘制各科成绩柱状图
a) 高数成绩柱状图
柱状图由 barplot 函数画出,参数 H 为数据,xlab 和 ylab 为 x, y 轴的名称,main 为标题,co l为柱形的颜色。
b) 英语成绩柱状图
同上。
c) 网站开发成绩柱状图
4) 绘制各科成绩饼图
a) 高数成绩饼图
饼形图由 pie 函数画出,x 为数据,labels 为切片的描述,radius 为圆的半径,介于 -1 到 1 ,main 为标题,col 为调色板,clockwise 为逻辑值,表示绘制时的顺时针或逆时针方向。
b) 英语成绩饼图
同上。
c) 网站开发成绩饼图
5) 绘制各科成绩箱尾图
a) 高数成绩箱尾图
b) 英语成绩箱尾图
c) 网站开发成绩箱尾图
箱尾图由 boxplot 函数画出,参数x为数据,main 为标题,data 为数据帧,notch 为逻辑值,TRUE 时画一个缺口,col 为颜色集。
5. 画星相图,解释其含义
星相图中每个观测单位为一个图形,圆形或半圆,每个图形被平分为各个值数量的三角形或扇形,每个三角形或扇形半径的大小表达对应值的大小。
星相图由函数 stars 画出,第一个参数为数据集;full 为一个逻辑值,等于 TRUE 时星相图为整个圆,FALSE 时为半个圆,缺省值为 TRUE;radius 为一个逻辑值,等于 TRUE 时在每个变量中间会绘制半径,缺省值为 TRUE;draw.segments = T 表示每个变量的图形为扇形,并且用颜色区分每个变量。
6. 画脸谱图,解释其含义
脸谱图中每个观测单位为一个脸谱,脸上的各个特征对应该观测单位的各个值,比如脸的高度,宽度,脸型,嘴巴厚度,微笑,眼睛的高度等等,这些特征反应观测单位相应值的大小。
脸谱图由 aplpack 包给出的 faces 函数画出,参数 face.type 为脸的类型,值为 1 时为普通的脸谱,值为 2 时是圣诞老人的脸谱。
7. 画茎叶图,QQ 图
1) 茎叶图
a) 高数成绩茎叶图
茎叶图由 stem 函数画出,参数 scale 控制茎叶图的长度,width 为宽度,atom 为容差。
b) 英语成绩茎叶图
同上。
c) 网站开发成绩茎叶图
2) QQ 图
a) 高数成绩 QQ 图
QQ 图由 qqnorm 函数画出,参数 col 为颜色。
b) 英语成绩 QQ 图
同上。
c) 网站开发成绩 QQ 图