创建假数据以重新创建应急 table
Create fake data to recreate a contingency table
是否可以创建虚假数据来重现意外事件table?
例如:
originalTable <- matrix(c(188, 29, 20, 51), ncol = 2, byrow = TRUE)
colnames(originalTable) <- c("A", "B")
rownames(originalTable) <- c("C", "D")
是否可以从 table 生成具有 288 对与 table 匹配的观测值的数据框?
我找到了 r2dtable 函数,但知道如何提取或另存为数据帧吗?
r2dtable(1, c(217, 71), c(208, 80))
提前致谢
您只需使用 table 即可生成正确数量的对。
x = c()
for(row in rownames(originalTable)) {
for(col in colnames(originalTable)) {
x = rbind(x, matrix(rep(c(row, col), originalTable[row,col]), ncol=2, byrow=TRUE))
}
}
df = as.data.frame(x)
table(df)
V2
V1 A B
C 188 29
D 20 51
您可以使用我的 "splitstackshape" 包中的 expandRows
:
library(splitstackshape)
expandRows(data.frame(as.table(originalTable)), "Freq")
# Var1 Var2
# 1 C A
# 1.1 C A
# 1.2 C A
# 1.3 C A
# 1.4 C A
# -----
# 1.19 C A
# 1.20 C A
# 1.21 C A
# 1.22 C A
# 1.23 C A
# 1.24 C A
# 1.25 C A
# 1.26 C A
# 1.27 C A
# -----
# 4.43 D B
# 4.44 D B
# 4.45 D B
# 4.46 D B
# 4.47 D B
# 4.48 D B
# 4.49 D B
# 4.50 D B
nrow(.Last.value)
# [1] 288
sum(originalTable)
# [1] 288
如果您已经在处理实际的 table
,则不需要 as.table
。
当然你也可以不打包:
data.frame(as.table(originalTable))[rep(sequence(prod(dim(originalTable))),
c(originalTable)), c(1, 2)]
是否可以创建虚假数据来重现意外事件table?
例如:
originalTable <- matrix(c(188, 29, 20, 51), ncol = 2, byrow = TRUE)
colnames(originalTable) <- c("A", "B")
rownames(originalTable) <- c("C", "D")
是否可以从 table 生成具有 288 对与 table 匹配的观测值的数据框?
我找到了 r2dtable 函数,但知道如何提取或另存为数据帧吗?
r2dtable(1, c(217, 71), c(208, 80))
提前致谢
您只需使用 table 即可生成正确数量的对。
x = c()
for(row in rownames(originalTable)) {
for(col in colnames(originalTable)) {
x = rbind(x, matrix(rep(c(row, col), originalTable[row,col]), ncol=2, byrow=TRUE))
}
}
df = as.data.frame(x)
table(df)
V2
V1 A B
C 188 29
D 20 51
您可以使用我的 "splitstackshape" 包中的 expandRows
:
library(splitstackshape)
expandRows(data.frame(as.table(originalTable)), "Freq")
# Var1 Var2
# 1 C A
# 1.1 C A
# 1.2 C A
# 1.3 C A
# 1.4 C A
# -----
# 1.19 C A
# 1.20 C A
# 1.21 C A
# 1.22 C A
# 1.23 C A
# 1.24 C A
# 1.25 C A
# 1.26 C A
# 1.27 C A
# -----
# 4.43 D B
# 4.44 D B
# 4.45 D B
# 4.46 D B
# 4.47 D B
# 4.48 D B
# 4.49 D B
# 4.50 D B
nrow(.Last.value)
# [1] 288
sum(originalTable)
# [1] 288
如果您已经在处理实际的 table
,则不需要 as.table
。
当然你也可以不打包:
data.frame(as.table(originalTable))[rep(sequence(prod(dim(originalTable))),
c(originalTable)), c(1, 2)]