4

order関数を使用してテーブルの列を並べ替えようとしていますが、

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


z<-data.frame(a,b)

Zを列aで最大から最小に並べ替えたいとき、うまくいきません。この関数は、負の値をその絶対値で並べ替えます。

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

2 に答える 2

1

因子を数値に変換する必要がある場合は、FAQ で説明されているように、まず文字 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
于 2011-05-27T03:43:38.617 に答える
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
于 2016-03-23T17:00:58.860 に答える