【R语言小小屋】:NO.1 第二周案例

1. 案例

1.1 案例背景

  最近某大学统计与应用统计专业开设了R语言和大数据技术课程,班级人数共100人。

1.2 案例重述

 通过R语言完成该100位同学学号的生成,同时使用R语言模拟生成r语言和大数据技术成绩,成绩满分为100,需要满足正态分布,成绩生成后,求出:
 1.同学们的各科总分;
 2. 各科平均分;
 3.求最高分的同学;
 4.画出总分的柱状图。

2. R语言实现

2.1 创建数据集

 id<-c(1:100)  # 学生的id
 n<-100  # 种子数目
 # rnorm()生成随机正态分布序列
 r_language_grade<-round(rnorm(n, mean = 60, sd = 10))
 big_data_science_grade<-round(rnorm(n, mean = 70, sd = 10))
 
 # 拼接id和两门课成绩
 data<-data.frame(id,r_language_grade,big_data_science_grade)
 print(data)

2.2 分析问题

2.2.1 数据简介

 print('数据集的摘要')
 summary(data[,c(2:3)])

2.2.2 数据任务

 # 总分:sum()
 r_language_grade_sum<-sum(data$r_language_grade)  # 班级总分
 big_data_science_grade_sum<-sum(data$big_data_science_grade)  # 班级总分
 
 # data$sum<- data$r_language_grade + data$big_data_science_grade # 个人总分
 
 # 平均分:mean()
 r_language_grade_mean<-mean(data$r_language_grade)  # 班级均分
 big_data_science_grade_mean<-mean(data$big_data_science_grade)  # 班级均分
 # data$mean<- (data$r_language_grade + data$big_data_science_grade)/2 # 个人均分
 
 # 于此使用transform()函数,简单便捷!
 data<-transform(data, sum=r_language_grade + big_data_science_grade, mean=(r_language_grade + big_data_science_grade)/2)
 
 # 最高分同学:which(max(data$varible))
 id_1<-data$id[which(data$r_language_grade==max(data$r_language_grade))]
 id_2<-data$id[which(data$big_data_science_grade==max(data$big_data_science_grade))]
 print(paste('R语言最高成绩的id为:',id_1))
 print(paste('大数据科学技术最高成绩的id为:',id_2))
 # 相关分析:相关系数
 r_bigdata_cor<-cor(data$r_language_grade,data$big_data_science_grade)
 print(paste('R语言与大数据科学技术课程的相关系数为:',r_bigdata_cor))

2.3 可视化

2.3.1 散点图

 plot(id,r_language_grade,col=rainbow(100))
 plot(id,big_data_science_grade,col=rainbow(100))

2.3.2 柱形图

 hist(data$r_language_grade,xlab='r_language_grade',ylab='frequency',main = paste("Histogram of",'r_language_grade'),col="lightgrey")  
 hist(data$big_data_science_grade,xlab='big_data_science_grade',ylab='frequency',main = paste("Histogram of",'big_data_science_grade'),col="orange")
 hist(data$sum,xlab='sum_grade',ylab='frequency',main = paste("Histogram of",'sum_grade'),col="blue")

3. 总结

3.1 案例总结

 该案例上手较为简单,十分适合入门级选手实践。在案例中,包含了数据正态分布随机数的生成、变量特征描述及简单的数据可视化。

3.2 个人总结

 在整个案例的实现过程大致出现以下几点问题,并值得我去思考与反省:
 第一,对于案例更新信息的及时捕捉。我第一次完成时没有下载最新版本的案例,因此,会在解决案例时存在着一定的偏颇;
 第二,思考维度的局限性。在问题二中,出题者所要求的给出总分和均值,我在第一反应时是求出各个课程的总分与均值,实则,在另一个角度上思考这个问题,我们可以基于每一位同学给出总分与均值;
 第三,代码优化上,第一次没有使用transform()函数,总的来看transform()函数生成新的变量的方式会更加地便捷。

撰稿: Janck.C

时间: 2020/10/08

posted @ 2020-10-09 22:18  janck  阅读(331)  评论(0)    收藏  举报