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包处理起来感觉挺慢的, 不知道有没有更加节约时间有效率的方法?
多谢了。


雷达卡




京公网安备 11010802022788号







