楼主: 稀释时间
5804 4

[问答] 关于R中的排序 [推广有奖]

  • 0关注
  • 0粉丝

已卖:1份资源

高中生

52%

还不是VIP/贵宾

-

威望
0
论坛币
1450 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
175 点
帖子
8
精华
0
在线时间
49 小时
注册时间
2014-11-30
最后登录
2021-6-7

楼主
稀释时间 发表于 2016-3-18 15:54:23 |AI写论文
50论坛币
     请教一下R中关于排序的问题     具体如下:有一个数据框,有两列数据,如图中B和C列,ID为三个班级中学生的ID,grade为分数,其中LA1,LA2,LA3对应的分数为各个班级上一次考试的班级平均分(即PA的数据与其他grade没有必然联系)。现进行如下排序,1,首先根据LA的数据大小进行每个班级的排序;2,然后再以每个班级为单位,在班级内部进行每个学生的成绩排序(第2步中,LA不参与排序)
      排序最终结果如E,F所示。

    我的思路:1,先对excel的数据进行处理,将所有LA的数据都标记为蓝色,加粗
                      2,将处理好的数据导入到R中
                      3,在R中进行蓝色加粗字体的定位,将整个数据框拆分成n个数据框(n由其中一列中蓝色加粗的个数决定),然后               根据每个小数据框中的PA值进行小数据框的排序(即上述中第一个排序)
                      4,再在每个小数据框中进行id的排序(即上述中第二个排序)

     请问用R如何操作?我在处理的时候,read.csv( ) 无法将csv数据中的颜色等信息读取,至于xlsx包和readxl包也看了一下,好像也不行(不确定是否可行),所以麻烦帮小弟解答。谢谢!

QQ图片20160318153734.png (5.78 KB)

QQ图片20160318153734.png

关键词:Grade EXCEL Grad READ 数据导入 中学生 excel

沙发
稀释时间 发表于 2016-3-18 15:55:55
还有一个信息:上述班级的数量和每个班级中学生的数量都是不固定的

藤椅
万人往LVR 在职认证  发表于 2016-3-20 17:02:09
想不出来什么函数比较直接,笨笨的写一个倒是可以
  1. data <- data.frame(id=c('LA1',1,2,3,'LA2',1,2),grade=c(70,60,70,80,85,70,80))
  2. idx <- grep('LA',data$id)
  3. rows <- diff(c(idx,nrow(data)+1))
  4. orders <- order(data$grade[idx],decreasing=T)
  5. for(i in 1:length(orders)){
  6.   data$class_order[idx[orders[i]]:(idx[orders[i]]+rows[orders[i]]-1)] <- i
  7. }
  8. data$stu_order <- ifelse(grepl('LA',data$id),1,2)
  9. results <- data[order(data$class_order,data$stu_order),c(1,2)]
复制代码

已有 2 人评分论坛币 学术水平 热心指数 收起 理由
求证1加1 + 1 热心帮助其他会员
jiangbeilu + 20 + 2 热心帮助其他会员

总评分: 论坛币 + 20  学术水平 + 2  热心指数 + 1   查看全部评分

板凳
稀释时间 发表于 2016-3-20 23:37:41
万人往LVR 发表于 2016-3-20 17:02
想不出来什么函数比较直接,笨笨的写一个倒是可以
谢谢你  运行了一下  大致思路是可行的  但是我这个只是举了个例子  实际问题和这个还是有点出入  所以我有空的时候我自己再琢磨下  有问题的话还请你帮忙  谢谢

报纸
hubifeng? 学生认证  发表于 2016-3-22 13:12:32
可以增加数据变量,增加维度。把变量变为四个,ID  LA_number  LA_grade   grade,首先对LA_grade排序,然后对grade分块排序
已有 1 人评分论坛币 学术水平 收起 理由
jiangbeilu + 10 + 1 热心帮助其他会员

总评分: 论坛币 + 10  学术水平 + 1   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 01:12