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