1

我有一个数据框 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 值。我经历了很多线程,但找不到任何解决方案。任何人都可以请建议。

4

2 回答 2

1

尝试这个

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

此外,您可以使用

options(stringsAsFactors = FALSE) 

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

stringsAsFactors = FALSE
于 2013-02-13T07:59:07.923 回答
1
z <- x[order(x$a,-as.character(x$c) ), ]
z

如果 Roman 怀疑您的因子级别中有数字,您可能需要按照他的建议进行操作并添加as.numeric,否则9将大于10

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

但如果他们是角色,那么你将再次获得所有 NA,所以这实际上取决于级别的性质x$c

于 2013-02-13T08:09:27.980 回答