【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
时间:

浙公网安备 33010602011771号