3

以下のようなデータ フレームを c1 の降順で、c2 の昇順で並べ替える方法を見つけようとしています。

c1 <- c("a", "b", "c", "d", "d", "e", "f", "g", "h", "i")
c2 <- c("29-JAN-08", "29-JAN-08", "29-JAN-08", "29-JAN-08", "20-MAR-08", "28-MAR-08", "28-MAR-08", "28-MAR-08", "28-MAR-08", "28-MAR-08")
example <- data.frame(c1, c2)

日付ベクトルで - 記号を使用できません。

> example <- example[order(example$c1, -example$c2),]
Error: unexpected input in "example <- example[order(example$c1, -1ex"

そして、「減少」引数の使用方法を理解できませんでした:

> example <- example[order(example$c1, example$c2, decreasing = c(F, T)),]
Error: unexpected input in "example <- example[order(example$c1, -1ex"

列がそれぞれ文字型と日付型である場合、最初の列で昇順、2 番目で降順で、これら 2 つの列でこのデータ フレームを並べ替える方法はありますか?

4

2 に答える 2

3

これは逆の字句ソートを行いますが、日付の値にまだ変換していないため、意図したものではない可能性があります。逆のソートは最初に文字の「フィールド」で行われるためです。

 example[ order(example$c1, rev(example$c2)) , ]
#-------
   c1        c2
1   a 29-JAN-08
2   b 29-JAN-08
3   c 29-JAN-08
4   d 29-JAN-08
5   d 20-MAR-08
6   e 28-MAR-08
7   f 28-MAR-08
8   g 28-MAR-08
9   h 28-MAR-08
10  i 28-MAR-08

逆の「真の」日付順でソートしたい場合:

example[ order(example$c1, -as.numeric(as.Date(example$c2, format="%d-%b-%Y"))) , ]
#-----
   c1        c2
1   a 29-JAN-08
2   b 29-JAN-08
3   c 29-JAN-08
5   d 20-MAR-08
4   d 29-JAN-08
6   e 28-MAR-08
7   f 28-MAR-08
8   g 28-MAR-08
9   h 28-MAR-08
10  i 28-MAR-08
9   h 28-MAR-08
10  i 28-MAR-08
于 2013-04-25T02:26:18.983 に答える