1

列a、b、cを持つデータフレームxがあります。

列 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

ローマンがあなたの因子レベルに数字があると疑っている場合、彼が示唆するように を追加する必要があるかもしれませas.numeric910

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

しかし、それらがキャラクターの場合は、再びすべての NA を取得するため、実際にはレベルの性質に依存します。x$c

于 2013-02-13T08:09:27.980 に答える