全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
7783 3
2016-05-14
a<-c(1,3,2,4)
b<-c("dd","aa","bb","cc")
c<-c(TRUE,FALSE,FALSE,FALSE)
d<-data.frame(a,b,c)

> d
    a  b     c
1 1 dd  TRUE
2 3 aa FALSE
3 2 bb FALSE
4 4 cc FALSE


我想让C列从小到大排序,再B列从大到小排序

理想的结果:
  a  b     c
1 4 cc FALSE
2 2 bb FALSE
3 3 aa FALSE
4 1 dd  TRUE


网上搜出来的方法是按  d[order(d$c,-d$b),] 但是会出现错误:
Warning message:
In Ops.factor(d$b) : ‘-’ not meaningful for factors
如果我想用这个order函数,要怎么实现正确排序?

还有就是,我最后想到的方法是用sqldf包,直接sqldf("select * from d order by c, b DESC")搞定,
但因为实际要处理的data.frame很大,我需要某十列从小到大,某几列从大到小。
sqldf包处理起来感觉挺慢的, 不知道有没有更加节约时间有效率的方法?

多谢了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-5-14 17:05:57
多写几行代码,自己写个小程序排序一列。 然后多次调用就可以吧。

或者,EXCEL里面排序2次EXPAND,也可以
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-14 17:33:10
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-5-14 17:47:00
万人往LVR 发表于 2016-5-14 17:33
运行成功,多谢,我昨天试了as.numeric不成功,不过把as.integer忘记了....
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群