1

次のようなテーブルがあります。

       1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
  586  0 0 0 1 0 0 0 1 3  1  0  1  0  0  0  0  0  1  0  2  0  3  0  0  0  4  0  1  2  0
  637  0 0 0 0 0 0 2 3 2  2  0  4  0  0  0  0  1  0  0  2  0  1  1  1  0  0  0  0  0  1
  989  0 0 1 0 0 0 2 1 0  0  0  2  1  0  0  1  2  1  0  3  0  2  0  1  1  0  1  0  1  0
  1081 0 0 0 1 0 0 1 0 1  1  0  0  2  0  0  0  0  0  0  3  0  5  0  0  2  1  0  1  1  1
  2922 0 1 1 1 0 0 0 2 1  0  0  0  2  0  0  0  1  1  0  1  0  3  1  1  2  0  0  1  0  1
  3032 0 1 0 0 0 0 0 3 0  0  1  0  2  1  0  1  0  1  1  0  0  3  1  1  1  1  0  0  1  1

最初の行の 1 から 30 までの数字は私のラベルで、列は私の項目です。アイテムごとに、カウントが最も多いラベルを見つけたいと思います。たとえば、586 には 26 の 4 つのカウントがあり、これはその行の最大数であるため、586 には 26 を割り当てたいと思います。

max(table1[1,])) を使用して各行の最大値を取得できます。これにより、最初の行の最大値が取得されますが、対応するラベルは取得されませんが、わかりませんどうやって進める。すべての助けに感謝します!

出力:

structure(c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
0L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 2L, 1L, 0L, 0L, 1L, 3L, 1L, 
0L, 2L, 3L, 3L, 2L, 0L, 1L, 1L, 0L, 1L, 2L, 0L, 1L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 1L, 1L, 4L, 2L, 0L, 0L, 0L, 0L, 0L, 1L, 2L, 2L, 
2L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 1L, 0L, 1L, 2L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 
0L, 0L, 0L, 0L, 1L, 2L, 2L, 3L, 3L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 3L, 1L, 2L, 5L, 3L, 3L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 
0L, 1L, 1L, 0L, 0L, 1L, 2L, 2L, 1L, 4L, 0L, 0L, 1L, 0L, 1L, 0L, 
0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 2L, 0L, 1L, 1L, 0L, 
1L, 0L, 1L, 0L, 1L, 1L, 1L), .Dim = c(6L, 30L), .Dimnames = structure(list(
    c("586", "637", "989", "1081", "2922", "3032"), c("1", "2", 
    "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
    "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", 
    "24", "25", "26", "27", "28", "29", "30")), .Names = c("", 
"")))
4

2 に答える 2

8

max.col各行の最大値に対応する列番号のベクトルを提供します。

> max.col(df, tie='first')
[1] 26 12 20 22 22 8

そのベクトルを使用して、各行の列名を取得できます。

> colnames(df)[max.col(df, tie='first')]
[1] "26" "12" "20" "22" "22" "8"
于 2013-02-26T17:03:13.873 に答える
5

を探しているのかもしれませんwhich.max。マトリックスが「temp」と呼ばれると仮定します。

> apply(temp, 1, which.max)
 586  637  989 1081 2922 3032 
  26   12   20   22   22    8 

applywith MARGIN = 1(2 番目の引数) は、ごとに関数を適用します。

于 2013-02-26T17:02:18.347 に答える