-1

我有一个只有列标签的矩阵,我想按列 A 排序,其中重复元素在非重复之前排名。因此,因为 7 在 A 列中出现了四次,所以被移动到 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

你的问题需要更清楚。值是如何确定BC?从描述中,听起来这些应该只是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 回答