如何将2x2列联表转换为长格式数据帧?

时间:2015-11-07 14:49:23

标签: r reshape2 tidyr splitstackshape

如何将2x2列联表转换为长格式数据帧? 我试过这个:

library(reshape2)
Table <- matrix(c(7,67,19,71), 2, 2, byrow=TRUE)
rownames(Table) <- c('Drug', 'No_Drug')
colnames(Table) <- c('Comp', 'No_Comp')
melt(Table)

我得到的不是由Drug vs. No_Drug

分类的164行数据框
  Var1    Var2 value
1    Drug    Comp     7
2 No_Drug    Comp    19
3    Drug No_Comp    67
4 No_Drug No_Comp    71

1 个答案:

答案 0 :(得分:1)

根据我的理解,您正在尝试将4x3熔化的data.frame转换为164x2 data.frame。您可以尝试expandRows()包中的splitstackshape

  

扩展(复制)data.frame或data.table的行   由固定数字,指定向量或包含在其中一个中的值   源data.frame或data.table中的列。

在您的情况下,只需:

library(splitstackshape)
m <- melt(Table)
expandRows(m, "value") 

注意:这是基本R:

的方便包装
out <- m[rep(sequence(nrow(m)), m[["value"]]), ]
out[["value"]] <- NULL