-1

列ラベルのみのマトリックスがあり、列 A で並べ替えたいと考えています。ここでは、繰り返し要素が非繰り返し要素の前にランク付けされています。したがって、列 A に 7 が 4 回出現するため、列 A に 2 がある行の前に移動されます。これが意味をなすことを願っています。

    A   B   C
    1   11  14
    2   2   2
    2   5   12
    2   13  2
    3   16  19
    3   10  0
    4   20  17
    5   5   16
    7   14  18
    7   8   10
    7   10  17
    7   7   0

今、私がそれをどのように見せたいかは次のとおりです。

    A   B   C
    7   14  18
    7   8   10
    7   10  17
    7   7   0
    2   2   2
    2   5   12
    2   13  2
    3   16  19
    3   10  0
    1   11  14
    4   20  17
    5   5   16

ご協力ありがとうございました。

4

2 に答える 2

1

あなたの質問はもっと明確にする必要があります。値はどのようにB決定されCますか? 説明から、これらは元のデータの列の値に対応する値であるようにA思えますが、あなたの例ではそうではありません。

Aさらに明確にするまで、条件に従って行をソートするベースRの方法を次に示します。

d <- as.matrix(read.table(text="A   B   C
    1   11  14
    2   2   2
    2   5   12
    2   13  2
    3   16  19
    3   10  0
    4   20  17
    5   5   16
    7   14  18
    7   8   10
    7   10  17
    7   7   0", header=TRUE))

counts <- table(d[,'A'])
ranks <- rank(interaction(counts, names(counts), lex.order=TRUE))
d[order(ranks[match(d[,'A'], names(counts))], decreasing=TRUE), ]

#       A  B  C
#  [1,] 7 14 18
#  [2,] 7  8 10
#  [3,] 7 10 17
#  [4,] 7  7  0
#  [5,] 2  2  2
#  [6,] 2  5 12
#  [7,] 2 13  2
#  [8,] 3 16 19
#  [9,] 3 10  0
# [10,] 5  5 16
# [11,] 4 20 17
# [12,] 1 11 14
于 2013-01-09T18:41:03.983 に答える
0
library(plyr)
counts <- count(df, 'A')
df[order(merge(df, counts)$freq, decreasing=TRUE), ]
于 2013-01-09T18:18:01.567 に答える