2016-12-24 100 views
2

我在Excel工作表看起來像以下一些數據:列出成矩陣

User | Query 
u1  | q3 
u2  | q7  
u2  | q7 
u3  | q1 
u3  | q10 
u3  | q8 
u4  | q9 
u4  | q2 

現在我要蓋這個數據到像矩陣:

q1 q2 q3 q7 q8 q9 q10 
u1 0 0 1 0 0 0 0 
u2 0 0 0 2 0 0 0 
u3 1 0 0 0 1 0 1 
u4 0 1 0 0 0 1 0 

我不知道是什麼是這種矩陣的名稱,但我想從這個矩陣中創建圖形。那麼,有沒有辦法讓從上面使用任何無論是「R」或提及列表中的矩陣「創先爭優?

+0

考慮頂端答案[此篇](http://stackoverflow.com/questions/26207850/create-sparse-matrix-from-a-data-frame),以使一個稀疏矩陣對象(也許這就是你想要的,如果有很多零), –

回答

0

這是一個雙向列聯表。

你首先需要閱讀你的數據爲R從Excel工作表的數據幀。您可以使用read.csvread.table,但你沒有提供您的工作表的樣本,我不能爲此產生確切的代碼。

現在,假設數據幀是d,那麼我們可以做

xtabs(~ User + Query, d) 

#  Query 
#User q1 q10 q2 q3 q7 q8 q9 
# u1 0 0 0 1 0 0 0 
# u2 0 0 0 0 2 0 0 
# u3 1 1 0 0 0 1 0 
# u4 0 0 1 0 0 0 1 

table(d[[1]], d[[2]]) 

#  q1 q10 q2 q3 q7 q8 q9 
# u1 0 0 0 1 0 0 0 
# u2 0 0 0 0 2 0 0 
# u3 1 1 0 0 0 1 0 
# u4 0 0 1 0 0 0 1 
+0

謝謝李哲元。你的回答完美無缺。爲你付出努力 – rafiyz