首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建假数据以重新创建偶联表

创建假数据以重新创建偶联表
EN

Stack Overflow用户
提问于 2018-03-04 10:59:37
回答 2查看 179关注 0票数 1

是否可以创建假数据来重新创建偶联表?

例如:

代码语言:javascript
复制
originalTable <- matrix(c(188, 29, 20, 51), ncol = 2, byrow = TRUE)
colnames(originalTable) <- c("A", "B")
rownames(originalTable) <- c("C", "D")

是否可以从包含288对与表匹配的观测值的表中生成数据帧?

我找到了r2dtable函数,但是你知道如何提取或另存为数据帧吗?

代码语言:javascript
复制
r2dtable(1, c(217, 71), c(208, 80))

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-04 12:02:57

你可以使用我的"splitstackshape“包中的expandRows

代码语言:javascript
复制
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

当然,您也可以在没有包的情况下完成此操作:

代码语言:javascript
复制
data.frame(as.table(originalTable))[rep(sequence(prod(dim(originalTable))), 
                                        c(originalTable)), c(1, 2)]
票数 2
EN

Stack Overflow用户

发布于 2018-03-04 11:18:23

您只需使用该表生成正确数量的对即可。

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49091515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档