我有一个给定顺序的向量:
p <- c("x", "y", "y",
"y", "z", "a",
"b", "b", "c",
"c", "c", "v")
我希望输出看起来好看&#34;在具有三列的网格中,这意味着如果三个值相同,则应强制它们位于同一行(y
和c
):
p.expected <- c( "y", "y", "y",
"x", "z", "a",
"b", "b", "v",
"c", "c", "c")
我不介意一个群体的价值是上涨还是下跌,但这种变化应该尽可能小。
例如,如果我将y
值的原始位置在Y轴上写为{1, 2}
,则y
行的理想行将为1
或{{1} }。虽然2
{3,4}应出现在行c
或3
中。
因此,这个答案对顺序的改变太过分了:
4
以下是打印输出的方法:
[,1] [,2] [,3]
[1,] "y" "y" "y"
[2,] "c" "c" "c"
[3,] "x" "z" "a"
[4,] "b" "b" "v"
答案 0 :(得分:0)
p <- c("x", "y", "y",
"y", "z", "a",
"b", "b", "c",
"c", "c", "v")
myfactor <- table(ordered(p, levels = unique(p)))
mynumbers <- rep(myfactor, myfactor)
根据myfactor
的递减顺序对mynumbers
进行排序:
output <- myfactor[order(-mynumbers)]
您可以在矩阵中更好地看到它:
matrix(output, ncol = 3, byrow = T)
## [,1] [,2] [,3]
## [1,] "y" "y" "y"
## [2,] "c" "c" "c"
## [3,] "b" "b" "x"
## [4,] "z" "a" "v"