根据数据框中的2列排序数据

时间:2013-02-13 07:53:08

标签: r

我的数据框x包含a,b,c列。

我正在尝试根据列a和c来排序数据,我的排序标准是在a上升,在c上下降。以下是我写的代码。

z <- x[order(x$a,-x$c),]

此代码给出了如下警告。

Warning message:
In Ops.factor(x$c) : - not meaningful for factors

另外,当我使用head(z)检查数据帧z时,它给出了错误的数据,如下所示:

30708908 0.3918980    NA
22061768 0.4022183    NA
21430343 0.4118651    NA
21429828 0.4134888    NA
21425966 0.4159323    NA
22057521 0.4173094    NA

并且最初在数据帧x中没有列c的任何NA值。我经历了很多线程,但找不到任何解决方案。任何人都可以建议。

2 个答案:

答案 0 :(得分:1)

试试这个

install.packages('plyr');
library('plyr');
z<-arrange(x,a,desc(c));

此外,您可以使用

options(stringsAsFactors = FALSE) 

在创建框架之前,或在创建“x”数据框时,请指定

stringsAsFactors = FALSE

答案 1 :(得分:1)

z <- x[order(x$a,-as.character(x$c) ), ]
z

如果罗马怀疑你有你的因子级别的数字,你可能需要按照他的建议添加as.numeric,否则9将大于10

z <- x[order(x$a,-as.numeric(as.character(x$c)) ), ]
z

但如果他们是角色,那么你将再次得到所有的NAs,所以它实际上取决于x$c

级别的性质