生成具有不同数据的复式表
Posted
技术标签:
【中文标题】生成具有不同数据的复式表【英文标题】:Generate double entry table with different data 【发布时间】:2022-01-22 16:44:12 【问题描述】:我正在使用 R-exams,我想生成一个复式表,但每次都有一组不同的值(我建议 5 个不同的值:data1、data2、data3、data4、data5),但它没有工作,既不使用计数器,也不使用“样本”。
我该怎么做?谢谢
datos1 = c(0 , 2 , 4 , 2, 4 , 8, 13, 6, 12)
datos2 = c(11 , 2 , 4 , 2, 4 , 8, 3, 6, 12)
datos3 = c(12 , 2 , 14 , 2, 4 , 28, 3, 6, 12)
datos4 = c(13 , 2 , 4 , 2, 4 , 8, 3, 6, 12)
datos5 = c(1 , 2 , 4 , 22, 4 , 8, 3, 6, 12)
w9 <- sample(c(datos1, datos2, datos3, datos4, datos5),1)
tabla = cbind (expand.grid (list (Y = c ("3","5","6") ,
X = c ("6","8","9"))), count = w9)
ftable (xtabs(count ∼ Y + X, tabla ))
【问题讨论】:
嘿 Amelia,对于固定值w9
,您希望输出是什么?由于count
对于tabla
中的每一行都是相同的,所以xtabs
的输出对我来说很有意义。
如果 w9 是例如 datos5,则输出为第 1 22 3、2 4 6 和 4 8 12 行。我希望从一组 5 个可能的向量中随机选择一个组(data1 , 数据2 或....数据5)。我不想具体地把一个组。当我将其设置为随机选择其中一个组时,输出是一个行矩阵,所有 1 或 2 或 3 .....,即 1 1 1 1、1 1 1 1、1 1 1 1,这是不正确的,根据向量的值。
【参考方案1】:
感谢您的澄清,阿米莉亚 :)
c(datos1, datos2, datos3, datos4, datos5)
将它们组合成一个长向量,然后 sample 只从这些向量中获取 1 个单个值。相反,您想将它们放在一个列表中,然后进行采样。这使它们保持分离,因此样本然后查看列表级别并随机抽取一个。见下文:
w9 <- sample(list(datos1, datos2, datos3, datos4, datos5), 1)
# to extract it from the list back in to the same format as datos1, datos2 etc.
w9 <- unlist(w9)
编辑:协方差
遵循Wiki 中的示例部分。我假设你的风格和这个一样?
# package for data exploration
# install.packages("data.table") # if not installed, run this line
library(data.table)
dt <- as.data.table(tabla)
# X & Y stored as factors, converting to numbers
dt[, X := as.integer(as.character(X))]
dt[, Y := as.integer(as.character(Y))]
# weighted means of X and Y
dt[, mux := weighted.mean(X, count)]
dt[, muy := weighted.mean(Y, count)]
# need probabilities of each combo
dt[, p := count/sum(count)]
# covariance
cv <- dt[, sum(p*(X-mux)*(Y-muy))]
【讨论】:
结果完美。我想要的。非常感谢 谢谢阿米莉亚!有时间请采纳,不胜感激:) 乔尼,还有一个问题。以及如何计算得到的表中的协方差? 为你更新了答案:) 乔尼非常感谢你。我非常感谢你。你的回答解决了我的问题。以上是关于生成具有不同数据的复式表的主要内容,如果未能解决你的问题,请参考以下文章
MySQL:创建具有自动增量的表并将生成的值与同一表的不同列的值连接起来
PHP:具有不同名称的多个按钮以使用 AJAX 更新 MySQL 数据库
读取文件然后将文件写入 SQL Server BLOB 列的代码,生成具有不同字节的文件