![](/img/trans.png)
[英]How to read in tab delimited data in R and immediately make a matrix from the data?
[英]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.