3

如何将 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
4

1 回答 1

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
于 2015-11-07T15:01:36.550 回答