如何根据矩阵位置计算总分?

问题描述 投票:0回答:1

我的数据框由12列组成,其中有不同的参与者,位于前5位。它看起来像这样:

> top_5
     4         5         8         9          11         12         15         16         19         20        22         23       
[1,] "Nia"     "Hung"    "Hanaaa"  "Ramziyya" "Marissa"  "Jaelyn"   "Shyanne"  "Jaabir"   "Dionicio" "Nia"     "Shyanne"  "Roger"  
[2,] "Razeena" "Husni"   "Bradly"  "Marissa"  "Bradly"   "Muhsin"   "Razeena"  "Dionicio" "Magnus"   "Kelsey"  "Nia"      "Schyler"
[3,] "Shyanne" "Schyler" "Necko"   "Johannah" "Tatiana"  "Glenn"    "Nia"      "Jaelyn"   "Shyanne"  "Hanaaa"  "Mildred"  "German" 
[4,] "Schyler" "German"  "Hung"    "Lubaaba"  "Johannah" "Magnus"   "Dionicio" "German"   "German"   "Razeena" "Dionicio" "Jaabir" 
[5,] "Husni"   "Necko"   "Razeena" "Afeefa"   "Schyler"  "Dionicio" "Jaabir"   "Roger"    "Johannah" "Remy"    "Jaabir"   "Jaelyn" 

(可以使用此方法重新创建):

structure(c("Nia", "Razeena", "Shyanne", "Schyler", "Husni", 
"Hung", "Husni", "Schyler", "German", "Necko", "Hanaaa", "Bradly", 
"Necko", "Hung", "Razeena", "Ramziyya", "Marissa", "Johannah", 
"Lubaaba", "Afeefa", "Marissa", "Bradly", "Tatiana", "Johannah", 
"Schyler", "Jaelyn", "Muhsin", "Glenn", "Magnus", "Dionicio", 
"Shyanne", "Razeena", "Nia", "Dionicio", "Jaabir", "Jaabir", 
"Dionicio", "Jaelyn", "German", "Roger", "Dionicio", "Magnus", 
"Shyanne", "German", "Johannah", "Nia", "Kelsey", "Hanaaa", "Razeena", 
"Remy", "Shyanne", "Nia", "Mildred", "Dionicio", "Jaabir", "Roger", 
"Schyler", "German", "Jaabir", "Jaelyn"), .Dim = c(5L, 12L), .Dimnames = list(
    NULL, c("4", "5", "8", "9", "11", "12", "15", "16", "19", 
    "20", "22", "23")))

现在,如果参与者在第一行中,则意味着他们在该列中排名第一(因此对于第一列,“ Nia”是第一列,“ Razeena”是第二列,依此类推)。排名中的第一名获得5分,第二名获得4分,依此类推。现在,我想为矩阵中的每个参与者计算其得分。我的目标是使整体排名前5位。我该如何处理?

r matrix rank
1个回答
0
投票

一个选项是

out <- sapply(split(row(top_5)[5:1, ], top_5), sum)
out
#Afeefa   Bradly Dionicio   German    Glenn   Hanaaa     Hung    Husni   Jaabir   Jaelyn Johannah   Kelsey  Lubaaba   Magnus  Marissa  Mildred   Muhsin 
#       1        8       14        9        3        8        7        5        9        9        6        4        2        6        9        3        4 
#   Necko      Nia Ramziyya  Razeena     Remy    Roger  Schyler  Shyanne  Tatiana 
#       4       17        5       11        1        6       10       16        3 


head(out[order(out)], 5)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.