2011-05-27 10 views
3

私はそれが動作しませんが、最大から最小まで、列AでZを注文したい場合は、私は、テーブルの列を注文するorder機能を使用するために負の値を注文するために注文関数を使用する方法?

a<-c("-2","-7","-4") 
b<-c("9","-1","3") 


z<-data.frame(a,b) 

をしようとしています。この関数は、負の値を絶対値で指定します。

z[order(z$a,decreasing=TRUE),] 
+1

'Z [オーダー(A)、]私はこれをしようとすると、' ... –

+0

は、私は列の値を低下または増加のいずれかのz順序を取得しますa。これはうまくいくようです。データを表示したい順序とデータを表示している順序を投稿できますか? – ditkin

+2

本当に 'a'と' b'が要因になるのですか?私はそれが直感的な結果に直面していると推測しています。 – Chase

答えて

1

あなたを数値する要因を変換する必要がある場合はしなければならない、よくある質問で説明するよう、最初の数値に続い文字TNAに変換:

str(z) 
#'data.frame': 3 obs. of 2 variables: 
# $ a: Factor w/ 3 levels "-2","-4","-7": 1 3 2 
# $ b: Factor w/ 3 levels "-1","3","9": 3 1 2 

z[order(as.numeric(as.character(z$a)), decreasing=TRUE), ] 
    a b 
1 -2 9 
3 -4 3 
2 -7 -1 

(解説:要因は、もちろんない限り、彼らが "あります要因を命じた」、注文してとの比較されていない 『>』または 『<』はNAを返します。

> z$a[1] > z$a[2] 
[1] NA 
Warning message: 
In Ops.factor(z$a[1], z$a[2]) : > not meaningful for factors 

オードされているものあなたの努力の赤は、あなたが期待していなかった数字への内部強制でした。ここでは)

> z$a 
[1] -2 -7 -4 
Levels: -2 -4 -7 
> as.numeric(z$a) 
[1] 1 3 2 
+0

'z [order(a)]'は期待どおりに動作します。 -2、-4、-7 - 最大から最小。それとも偶然で正しいのですか? –

+1

OPが期待していたものではないかと思われます。彼は実際に彼が期待したことを言っていませんでした。私は、「負の数値」の文字照合順序が文字と数字の違いで悩まされていると想定していました。 "-2"> "-7" [1] FALSE; -2> -7 [1] TRUE –

+1

'z [order(a)]'は、文字のベクトルである 'a'変数を持つためにのみ機能します。これをデータフレームに入れると、それが要素になり、変換する必要があります。偶然、あなたが望むものはダッシュナンバーとして文字を読み込むので、並べ替えでは '' -9 ''は' '-1" 'よりも大きくなります。すべての値が負であるため、減少効果が得られますが、これは単なる偶然のことです。 –

0

は、単純なベクトルである:

x <- c(2, 4, 0.5, -0.5 ,-1, 3,10) 
print(x) 
2.0 4.0 0.5 -0.5 -1.0 3.0 10.0 
> order(x) 
5 4 3 1 6 2 7 # Not cool 

> match(x, sort(x)) 
4 6 3 2 1 5 7 # Cool 
+0

これは元の投稿(ここで言及していない独自の例や問題が含まれています)とは何が関係していますか?最後の行は 'rank(x)'と同じ結果を返します。 – Frank

関連する問題