【问题标题】:Difficulty with Long to Wide to Long Format in RR中从长到宽到长格式的困难
【发布时间】:2019-06-17 15:42:28
【问题描述】:

我正在尝试制作一个类似于相关图的图表。但是,我的数据是长格式的,我只想显示矩阵的下三角形。因此,我获取了我的数据并使用以下方法对其进行了重构:

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

【问题讨论】:

  • 你能显示预期吗
  • @akrun 已更新以显示预期。

标签: r reshape melt


【解决方案1】:

一个选项是转换为matrix,然后使用na.rm = TRUE 选项转换为melt

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

【讨论】:

    猜你喜欢
    • 2021-12-24
    • 2016-06-07
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多