簡體   English   中英

R 中的 Long 到 Wide 到 Long 格式的困難

[英]Difficulty with Long to Wide to Long Format in R

我正在嘗試制作類似於相關圖的圖表。 但是,我的數據是長格式的,我只想顯示矩陣的下三角形。 因此,我采用了我的數據並使用以下方法對其進行了整形:

x<-c('A','B','C')
data<-expand.grid(x,x)
data$value<-c(1,2,3,2,1,4,3,4,1)
r.data<-reshape(data, idvar = "Var1", timevar = "Var2", direction = "wide")
colnames(r.data)<-c('Var','A','B','C')
rownames(r.data)<-r.data$Var
r.data$Var<-NULL

接下來,我找到了數據的下三角部分:

get_lower_tri<-function(cormat){
  cormat[upper.tri(cormat)] <- NA
  return(cormat)
}
r.data_lower<-get_lower_tri(r.data)

但是當我使用melt()我現在只有一列變量和值,因為沒有id。 我將如何定義 id 變量或修復某些內容,使其采用標准的融合格式?

預期的:

Var1  Var2   value
 A     A       1
 B     A       2
 B     B       1
 C     A       3
 C     B       4
 C     C       1

一個選項是轉換為matrix ,然后用na.rm = TRUE選項melt

library(reshape2)
melt(as.matrix(r.data_lower), na.rm = TRUE)

暫無
暫無

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

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