0
我已經計算了4個不同時間段的相同項目的不同相似度矩陣,我想比較項目之間的相似度隨時間的變化。問題在於,對於每個矩陣,項目的順序即矩陣列是不同的。如何重新排列矩陣中的列,以便我所有的矩陣都可以比較?比較相似矩陣隨着時間的推移
我已經計算了4個不同時間段的相同項目的不同相似度矩陣,我想比較項目之間的相似度隨時間的變化。問題在於,對於每個矩陣,項目的順序即矩陣列是不同的。如何重新排列矩陣中的列,以便我所有的矩陣都可以比較?比較相似矩陣隨着時間的推移
移動評論到應答:
對於每個矩陣mx_j
創建的列名的向量:
cnj<-colnames(mx_j)
然後,對於任何給定的一對矩陣j和k的,
colmatch<- intersect(cnj,cnk)
將識別公共列,並且分析可以限於該名稱的子集。
所有的列名稱是否相同?然後,像'mx2 [,colnames(mx1)]','mx3 [,colnames(mx1)]'這樣的命令會將'mx2'和'mx3'命令爲'mx1'。如果你沒有名字,你需要一些其他的方式來知道他們應該在什麼順序。查看'?order'並且做一些類似'mx [,order(<你的排序向量>)]' – BrodieG
列名是矩陣'mx2'中的相同但不是每列都出現在矩陣'mx3'或'mx1'中,並且矩陣也有不同的維數,所以這不起作用,但是感謝@BrodieG它在未來會很有用。也許我應該將所有可能的列添加到數據集中,即使它們在計算相似性矩陣之前爲零。 –
是的,添加'空白'欄肯定是一種方法。或者,您可以創建列名的向量,並計算每個矩陣的「cn1 <-colnames(mx1)」,然後「intersect(cn1,cn2)」以計算匹配的列。 –