如何将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
答案 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