2014-10-03 52 views
2

Hi there!R - 比較計算的相關性

我有一張有24個名字和他們的分數的表格。對我而言,匹配兩個人的分數是相同的。因此,我需要調整每個球員在得分上的差異,與其他所有球員相比。這將導致一個24x24的矩陣,其中在對角線兩邊的比分相等

我有什麼

name1  score1 
name2  score2 
name3  score3 
.....  ..... 
name24  score24 

我在找什麼

    name1    name2   name 3 ...   name 24 
name1     0  score2-score1 score3-score1 ... score24-score1 
name2  score1-score2    0  score3-score2 ... score24-score2 
name3  score1-score3  score2-score3    0 ... score24-score3 
...     ...    ...    ... ...    ... 
name24 score1-score24 score2-score24 score3-score24 ...    0 

中當然,整個對角線上的數字的絕對值將是相等的,因此僅計算一半的分數是很困難的。

問題

有沒有簡單的方法做這樣的操作,preferebly一個量化的行動,或者我有for循環建立的呢?

// HK

回答

3

outer功能可能就是你正在尋找

score <- sample(24) 
names(score) <- sprintf("Player%02i", 1:24) 
outer(score, score, "-") 

     Player01 Player02 Player03 Player04 Player05 Player06 Player07 
Player01  0  19  4  18  10  17  21 
Player02  -19  0  -15  -1  -9  -2  2 
Player03  -4  15  0  14  6  13  17 
Player04  -18  1  -14  0  -8  -1  3 
Player05  -10  9  -6  8  0  7  11 
Player06  -17  2  -13  1  -7  0  4 
Player07  -21  -2  -17  -3  -11  -4  0 

(只顯示第一列和行。)

+0

有一種簡單的方法來保持山坳/行名稱。所有的名字都是分數表的行名? – user4098307 2014-10-03 13:39:59

+0

當然,但很難從你的問題中知道你的數據的形式。你可以編輯它並添加'dput()'的輸出嗎? – Backlin 2014-10-03 14:47:58

+0

對不起,我現在不是紐約個人電腦。但數據是矢量格式,row.names是玩家的名字。如果你需要輸出,我會稍後發佈。唯一列的名稱是'total'.. – user4098307 2014-10-03 15:50:42