“Gary1.csv”、“Gary2.csv”、“Gary3.csv”中保存了一个班级学生三个学期的成绩

  对三个学期中的成绩数据进行集成并重新计算综合成绩和排名,并按排名顺序排布(学号9位数111304001~11304047)

  Gary1.csv中数据

  

  Gary2.csv中数据

  

  Gary3.csv中数据

  

  cbind是根据列进行合并  (要求:所有数据行数相等)

  rbind是根据行进行合并  (要求:所有数据列数相同)

  

#打开工作目录文件
setwd('D:\\data') list.files() inputfile1=read.csv(file="Gary1.csv",header=TRUE)
inputfile2=read.csv(file="Gary2.csv",header=TRUE)
inputfile3=read.csv(file="Gary3.csv",header=TRUE) #删除inputfile1中的综合成绩和排名,删除inputfile2中的学号、姓名、综合成绩和排名
result=cbind(inputfile1[,-c(,)],inputfile2[,-c(,,,)]) #数据集列合并 #同理
result2=cbind(result,inputfile3[,-c(,,,)]) #对学生成绩进行相加,得到一组数据(我自己测试学生成绩是从第三列到第二十二列的)
#相加成绩保存到evaluation中
evaluation=apply(result2[,:], ,mean,na.rm=TRUE) #apply函数一般有三个参数
#第一个参数代表矩阵对象
#第二个参数代表要操作矩阵的维度 1表示对行进行处理,2表示对列进行处理
#第三个参数就是处理数据的函数
#apply会分别一行或一列处理该矩阵的数据。 #将evaluation用“综合测评”添加到resule2中,将结果用result11保存
result11=data.frame(result2,'综合测评'=evaluation) #对result11中按综合测评成绩进行decreasing减少量排名
result22=result11[order(result11$综合测评,decreasing = TRUE), ] result33=data.frame(result22,'测评排名'=order(result22$综合测评,decreasing = TRUE)) result33

Gary.R

  

实现过程

  apply函数三个参数:

  第一个参数代表矩阵对象
  第二个参数代表要操作矩阵的维度 1表示对行进行处理,2表示对列进行处理
  第三个参数就是处理数据的函数

  读取文件数据保存到inputfile中

inputfile1=read.csv(file="Gary1.csv",header=TRUE)
inputfile2=read.csv(file="Gary2.csv",header=TRUE)
inputfile3=read.csv(file="Gary3.csv",header=TRUE)

  删除inputfile1中的综合成绩和排名,删除inputfile2,inputfuke3中的学号、姓名、综合成绩和排名(合并数据后这些数据多余了)

result=cbind(inputfile1[,-c(,)],inputfile2[,-c(,,,)]) #数据集列合并

result2=cbind(result,inputfile3[,-c(,,,)])

  计算学生成绩并将所得结果添加到学生表中

evaluation=apply(result2[,3:22], 1,mean,na.rm=TRUE)

#将evaluation用“综合测评”添加到resule2中,将结果用result11保存
result11=data.frame(result2,'综合测评'=evaluation) #对result11中按综合测评成绩进行decreasing减少量排名
result22=result11[order(result11$综合测评,decreasing = TRUE), ] result33=data.frame(result22,'测评排名'=order(result22$综合测评,decreasing = TRUE)) result33

  当R数据中存在NA时,使用对数据的mean()函数时需要注意NA问题

     x<-c(1,2,3,NA,4,5)

    y<-mean(x)

      因为x中有NA,所以当对x进行mean操作时,y会被赋值为NA 
  
        通过在函数中加“na.rm=TRUE”可以除NA的干扰

  

  对学生成绩异常值检测  传送门  

  修改上列代码28行

evaluation=apply(result2[,3:22], 1,mean)

  

  补充:merge()函数  传送门

  merge 连接两个数据,官方参考文档语法

merge(x, y, by = intersect(names(x), names(y)),
by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
sort = TRUE, suffixes = c(".x",".y"),
incomparables = NULL, ...)
  merge(x,  y,  by,  by.x,  by.y, all,  all.x,  all.y...)
 
参数解释:
 
  x,y:需要合并的数据集
 
  by:用于连接两个数据集的列,当两个数据集公共列名相同,可以写成by = "公共列名"
 
  by.x、by.y:用于指定依据哪个列合并,常用于当两个数据集公共列名不一样的时候;
 
  all、all.x、all.y:指定x和y的行是否应该全部输出
 
  sort:是否需要排序

  merge()函数是对数据进行交并补运算,三张表进行数据合并时可先合并第一第二张表,再用所合成结果对第三张表进行合成

  测试a和aa中值的不同

setwd('D:\\data')

list.files()

inputfile1=read.csv(file="Gary1.csv",header=TRUE)
inputfile2=read.csv(file="Gary2.csv",header=TRUE)
inputfile3=read.csv(file="Gary3.csv",header=TRUE) #删除inputfile1中的综合成绩和排名,删除inputfile2中的学号、姓名、综合成绩和排名
result=cbind(inputfile1[,-c(10,11)],inputfile2[,-c(1,2,12,13)]) #数据集列合并 #同理
result2=cbind(result,inputfile3[,-c(1,2,7,8)]) a=merge(inputfile1,inputfile2,by=c("学号","课程名称"))
aa=merge(inputfile1,inputfile2,by=c("学号","课程名称","综合排名"))
b=merge(a,inputfile3,by=c("学号","课程名称"))

  发现aa中存在一个人成绩存在多个综合测评、综合排名的缺陷,把a也添加到by=c("学号","课程名称","综合排名")当中

  只要第一个学期和第二个学期综合排名不一样时,不显示合并成功的数据!!!

  

  merge()函数对数据的操作还是挺严格的!!!

R_Studio(学生成绩)使用cbind()函数对多个学期成绩进行集成的更多相关文章

  1. python课后练习当前目录下有一个文件名为score3.txt的文本文件, 存放着某班学生的学号和其两门专业课的成绩。

    题目: 当前目录下有一个文件名为score3.txt的文本文件, 存放着某班学生的学号和其两门专业课的成绩.分 别用函数实现以下功能: (1) 定义函数function1,计算每个学生的平均分(取 整 ...

  2. 【PTA】5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出。

    5-1 输入一个正整数n,再输入n个学生的姓名和百分制成绩,将其转换为两级制成绩后输出.要求定义和调用函数set_grade(stu, n),其功能是根据结构数组stu中存放的学生的百分制成绩scor ...

  3. sqlserver 查询各个学生语文、数学、英语、历史课程成绩

    -- 建表 插入数据 USE 你自己的数据库; CREATE TABLE Member( MID ) PRIMARY KEY, MName ) ); CREATE TABLE Course( FID ...

  4. Java初学者作业——编写JAVA程序,在控制台输入一位学生的英语考试成绩,根据评测规则,输出对应的成绩等级。定义方法实现学生成绩的评测功能。

    返回本章节 返回作业目录 需求说明: 编写JAVA程序,在控制台输入一位学生的英语考试成绩,根据评测规则,输出对应的成绩等级.要求:定义方法实现学生成绩的评测功能. 学生的英语考试成绩进行评测,评测规 ...

  5. Java初学者作业——编写Java程序,根据输入的某个班级的学员成绩,计算该班级学员的平均成绩,要求输入班级的人数。

    返回本章节 返回作业目录 需求说明: 编写Java程序,根据输入的某个班级的学员成绩,计算该班级学员的平均成绩,要求输入班级的人数. 实现思路: 声明变量sum.count以及avg用于存储总成绩.班 ...

  6. R_Studio(学生成绩)对两个班级学生成绩进行集合,重新计算学生综合测评成绩并对学生按综合测评成绩进行排名

    对成绩表"11_1_1.csv" "11_2_1.csv"进行集成,并重新计算4门课程的平均分为综合测评,增加“排名”属性,并按排名排序 "11_1_ ...

  7. R_Studio(学生成绩)对数据缺失值md.pattern()、异常值分析(箱线图)

    我们发现这张Gary.csv表格存在学生成绩不完全的(五十三名学生,三名学生存在成绩不完整.共四个不完整成绩) 79号大学语文.高等数学 96号中国近代史纲要 65号大学体育 (1)NA表示数据集中的 ...

  8. R_Studio(学生成绩)数据相关性分析

    对“Gary.csv”中的成绩数据进行统计量分析 用cor函数来计算相关性,method默认参数是用pearson:并且遇到缺失值,use默认参数everything,结果会是NA 相关性分析 当值r ...

  9. R_Studio(学生成绩)绘制频率分布直方图、分布饼图、折线比较图

    对“Gary.csv”中的成绩数据进行分布分析 (1)按0-59,60-69,70-79,80-89,90-100分组绘制高级语言程序设计成绩的频率分布直方图. (2)按0-59,60-69,70-7 ...

随机推荐

  1. GDOI2018游记

    前言 不知怎的,本蒟蒻居然拿到了GDOI参赛名额 于是乎,我稀里糊涂地跟着诸位大佬屁颠屁颠地来到了阔别已久的中山一中 腐败difficult and interesting的GDOI比赛就这样开始了. ...

  2. mweb发布文章为什么默认TinyMCE编辑器?

    如果是通过 metaweblog api 发布的,需要在网站分类中添加 [Markdown] 标记

  3. js获取url上的指定参数

    function getAllUrlParams(url) { // get query string from url (optional) or window var queryString = ...

  4. CSS3点击波浪按钮特效

    在线演示 本地下载

  5. Python应用RabbitMQ教程

    介绍 RabbitMQ是一个消息代理.它的工作就是接收和转发消息.你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处.在这个比喻中,RabbitMQ就扮演着邮箱.邮局以及邮 ...

  6. All shortest paths between a set of nodes

    .big{font-size:larger} .small{font-size:smaller} .underline{text-decoration:underline} .overline{tex ...

  7. C++ 友元(friend关键字)、类中的重载、操作符重载(operator关键字)

    C++ 中友元的用法: 1.在类中使用friend关键字声明 2.类的友元可以是其它类或者具体函数 3.友元不是类的一部分 4.友元不受类中访问级别的限制 5.友元可以直接访问具体类中的所有成员. 友 ...

  8. MySQL性能优化(三):索引

    原文:MySQL性能优化(三):索引 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vbi ...

  9. Linux 安装 python3.6 ,并且配置 Pycharm 远程连接开发

    Linux下安装Python3.6和第三方库   如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!! ...

  10. 常用CSS代码大全(工作必备)

    用html+css可以很方便的进行网页的排版布局,但不是每一种属性或者代码我们都铭记于心,最近我把CSS中的常用代码进行了归纳总结,方便自己以后查看,同时也分享给大家,希望对你们有用. 一.文本设置 ...