如何将 2x2 意外事件 table 转换为长格式数据帧?
How do I convert a 2x2 contingency table into a long format dataframe?
如何将 2x2 的意外事件 table 转换为长格式数据帧?
我试过这个:
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)
我得到的是这个,而不是按药物分类的 164 行数据框 No_Drug
Var1 Var2 value
1 Drug Comp 7
2 No_Drug Comp 19
3 Drug No_Comp 67
4 No_Drug No_Comp 71
据我了解,您正在尝试将 4x3 molten data.frame 转换为 164x2 data.frame。您可以尝试 splitstackshape
包中的 expandRows()
:
Expands (replicates) the rows of a data.frame or a data.table, either
by a fixed number, a specified vector, or a value contained in one of
the columns in the source data.frame or a data.table.
对于您的情况,只需执行以下操作:
library(splitstackshape)
m <- melt(Table)
expandRows(m, "value")
注意:这是对基数 R 的方便包装:
out <- m[rep(sequence(nrow(m)), m[["value"]]), ]
out[["value"]] <- NULL
如何将 2x2 的意外事件 table 转换为长格式数据帧? 我试过这个:
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)
我得到的是这个,而不是按药物分类的 164 行数据框 No_Drug
Var1 Var2 value
1 Drug Comp 7
2 No_Drug Comp 19
3 Drug No_Comp 67
4 No_Drug No_Comp 71
据我了解,您正在尝试将 4x3 molten data.frame 转换为 164x2 data.frame。您可以尝试 splitstackshape
包中的 expandRows()
:
Expands (replicates) the rows of a data.frame or a data.table, either by a fixed number, a specified vector, or a value contained in one of the columns in the source data.frame or a data.table.
对于您的情况,只需执行以下操作:
library(splitstackshape)
m <- melt(Table)
expandRows(m, "value")
注意:这是对基数 R 的方便包装:
out <- m[rep(sequence(nrow(m)), m[["value"]]), ]
out[["value"]] <- NULL