簡體   English   中英

制表符分隔為方形矩陣

[英]Tab Delimited to Square Matrix

我有一個制表符分隔文件,如

A   B   0.5
A   C   0.75
B   D   0.2

我想把它轉換成方形矩陣,比如

       A      B      C       D
A      0     0.5    0.75     0
B             0      0      0.2 
C                    0       0
D                            0

我怎么能在R? 謝謝,

如果數據框中的數據具有以下列名稱:

Var1    Var2    value

您可以使用

xtabs(value ~ Var1 + Var2, data = df)

有關更一般的數據重塑功能,請參閱plyr包。

另一種方法(不像JoFrhwld那樣優雅)

df<- read.table(textConnection("
Var1    Var2    value
A   B   0.5
A   C   0.75
B   D   0.2
"),header = T)


lev = unique(c(levels(df$Var1),levels(df$Var2)))
A = matrix(rep(0,length(lev)^2),nrow=length(lev))
colnames(A) = lev
rownames(A) = lev
apply(df,1,function(x) A[x[1],x[2]]<<-as.numeric(x[3]))

> A
  A   B    C   D
A 0 0.5 0.75 0.0
B 0 0.0 0.00 0.2
C 0 0.0 0.00 0.0
D 0 0.0 0.00 0.0
> 

我猜這是一個圖的加權鄰接矩陣。 如果是這樣,您可能會對igraph包感興趣,將數據讀取為加權邊列表。

暫無
暫無

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

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