簡體   English   中英

將成對距離矩陣轉換為R中的列格式

[英]Convert pairwise distance matrix to column format in R

我有一個成對的距離矩陣(4x4)。 如何從此矩陣轉換為具有2行的列格式? 為什么要兩排? 因為我不希望所有的成對比較,所以只有一半在輸出中顯示。 例如,如果我有一個10x10的矩陣,我將進行100次比較,但是我這100個中只有5個與我有關,而這5個將是物種1與物種2,物種3與物種4,物種5與物種6,物種7與物種8,物種9與物種種類10。

輸入:

        species1    species2    species3    species4
species1    0   0.093165625 0.228683707 0.194066949
species2    0.093165625 0   0.155611221 0.129896673
species3    0.228683707 0.155611221 0   0.04360685
species4    0.194066949 0.129896673 0.04360685  0

輸出:

species1    species2    0.093165625
species3    species4    0.04360685

不確定為什么您希望轉換后的矩陣只有兩行,但是通常可以使用stack

mat <- as.matrix(read.table(text =
    "       species1    species2    species3    species4
species1    0   0.093165625 0.228683707 0.194066949
species2    0.093165625 0   0.155611221 0.129896673
species3    0.228683707 0.155611221 0   0.04360685
species4    0.194066949 0.129896673 0.04360685  0", header = T))

stack(mat)[, c(1, 2, 4)]
#DataFrame with 16 rows and 3 columns
#            row      col          NA
#    <character>    <Rle>   <numeric>
#1      species1 species1           0
#2      species2 species1 0.093165625
#3      species3 species1 0.228683707
#4      species4 species1 0.194066949
#5      species1 species2 0.093165625
#...         ...      ...         ...
#12     species4 species3  0.04360685
#13     species1 species4 0.194066949
#14     species2 species4 0.129896673
#15     species3 species4  0.04360685
#16     species4 species4           0

這是一個非常獨特的要求。 您希望所有其他條目都來自一次性對角線。 好。

我最喜歡的將數據從寬格式轉換為長格式的方法是使用reshape2包中的melt() 然后構造提取所需值的序列。

> mat <- as.matrix(read.table(text =
+     "       species1    species2    species3    species4
+ species1    0   0.093165625 0.228683707 0.194066949
+ species2    0.093165625 0   0.155611221 0.129896673
+ species3    0.228683707 0.155611221 0   0.04360685
+ species4    0.194066949 0.129896673 0.04360685  0", header = T))
> library(reshape2)
> N <- nrow(mat)
> melt(mat)[seq(from=N+1,to=N^2,by=2*(N+1)),]
       Var1     Var2      value
5  species1 species2 0.09316563
15 species3 species4 0.04360685

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM