永发信息网

R语言 排序 次条件

答案:2  悬赏:0  手机版
解决时间 2021-04-18 20:13
  • 提问者网友:欲望失宠
  • 2021-04-18 14:05
R语言 排序 次条件
最佳答案
  • 五星知识达人网友:时间的尘埃
  • 2021-04-18 15:23
用order函数
数字从大到小,所以是倒序列,开启order中的倒序模式会导致所有关联的sort都是倒序,我们得用一个小技巧:负号。(order的作用是帮你拿到行的index,如此所有排序都是关联的。)


假如你数据叫data
data <- data[order(-data[[2]], data[[1]]), ]
data如此你的第二列数字会是取了相反数再sort,所以是倒序,而第一列是正排序,按照字母表顺序。
放在第一个位置的data[[2]]就是主条件,在后面的是次条件,次次条件。。。
追问因为我的数据表的title是这样的 data<-(单位名称 地名 某个指标)然后我要在每个地名里面做排序,我是用的tapply(data[,1],data[,2],order)来找到每个的位置的,如果这样加次条件的话应该怎么加?追答tapply(data[,1],data[,2],order) 是data[,1]根据data[,2]的order情况来重新排序。我猜想应该是data[,2]改成data[,2:1] ? 其实我也不知道。

我给你的解决方法 data[[2]]就相当于data的第二列:data[,2] 或者data$地名追问谢谢你!这样真的能行了!再问您一个问题,就是我把函数写成function之后,因为我用了as.number(),然后就会报错,因为里面有NA,报错了之后就不跑结果了。我用了suppresswarning 也没有用啊追答as.number, 是as.numeric吧?
我记得as.numeric(NA)不会报错,结果就是NA,连NaN也不会报错。
ps: suppresswarning 是把warning镇压下去,报错管不了的。追问对 是as.numberic,
是warning 不是error 但是我单独用这个的话(也就是不写在function里)的确是可以镇压warning 但是如果写在function里,就不会出结果,只给我几个warning 是为什么追答这我就真不知道了,具体给你的warning是什么啊
全部回答
  • 1楼网友:低音帝王
  • 2021-04-18 16:32
负号似乎只对数值型向量有效,那如果是字符型或者日期型该怎么处理呢?例如有三列数据,A列数值,B列日期,C列字符,要按照ABC的主次顺序排序,其中B列升序,C列降序,该怎么写呢?求解答
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯