我正在尝试对现有的元分析进行建模,以检查其他假设(例如,进行随机效应分析)以及重新采样技术。有超过2,000个科目,但数据相当简单:二元结果,成功或失败,与结构化评估的分数(0-10)相关联。我有每个分数成功或失败的频率,嵌套在每个研究中。我正在寻找一种更简单的方法来创建数据集,而不是将其键入,或多次使用rep函数。
我希望每一行看起来像这样: Study_ID,Test_Result [0-10],结果[0或1]
例如,假设我只有两个研究和两个测试水平(1或2):研究1有35个成功,85个失败得分为“1”;分数为“2”,46次成功,83次失败。在研究2中,得分为“1”,共有78次成功,246次失败;得分为“2”,45次成功,96次失败。
仅使用提供的频率,我怎样才能最轻松地创建具有数百行数据的数据帧?
答案 0 :(得分:1)
这可能有用,唯一需要修改以添加更多研究的是studies
列表。
## Your specifications
## Put the lengths of each grouping/study in a list so it's easy to work with
studies <- list(
study1 = c(35, 85, 46, 83),
study2 = c(78, 246, 45, 96))
score <- rep(1:2, each=2) # 1 1 2 2
type <- rep(0:1, len=4) # 0 1 0 1
## Repeat score/type by counts of each grouping/study
res <- lapply(studies, function(study)
data.frame(
score=rep(score, study),
type=rep(type, study)
))
## Combine into data.frame
dat <- data.frame(study=rep(seq_along(studies), times=sapply(studies, sum)),
as.list(do.call(rbind, res)))
head(dat)
# study score type
# 1 1 1 0
# 2 1 1 0
# 3 1 1 0
# 4 1 1 0
# 5 1 1 0
# 6 1 1 0
## Check counts
with(dat, table(type, score, study))
# , , study = 1
#
# score
# type 1 2
# 0 35 46
# 1 85 83
#
# , , study = 2
#
# score
# type 1 2
# 0 78 45
# 1 246 96