我必须为各种程序员分配文章。每篇文章都应编码两次,没有一对编码人员可以完全一起工作。
我认为该方案应如下所示(test
是我需要的例证):
art_id <- 1:21
coder1 <- c(1,2,3,4,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
coder2 <- c(1,0,0,0,0,0,7,8,9,10,11,0,0,0,0,0,0,0,0,0,0)
coder3 <- c(0,2,0,0,0,0,0,0,0,0,0,12,13,14,15,0,0,0,0,0,0)
coder4 <- c(0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,16,17,18,0,0,0)
coder5 <- c(0,0,0,4,0,0,0,0,9,0,0,0,13,0,0,16,0,0,19,20,0)
coder6 <- c(0,0,0,0,5,0,0,0,0,10,0,0,0,14,0,0,17,0,19,0,21)
coder7 <- c(0,0,0,0,0,6,0,0,0,0,11,0,0,0,15,0,0,18,0,20,21)
test <- data.frame(art_id, coder1, coder2, coder3, coder4, coder5, coder6, coder7)
这显然可以更容易,但我的数学技能非常有限。是否有一种“简单”的方式以这种方式自动分配200篇文章?
请注意,art_id
将是字符,而不是此插图中的数字。
感谢。
答案 0 :(得分:1)
我同意Carl Witthoft的建议,并建议您使用combn
功能。
这是我的尝试:
# Setup articles
articles <- paste("article_", seq(1:200))
# Setup unique coder probabilities
coders <- paste0("coder_", seq(1:7))
unique.coder.combinations <- do.call(paste, c(data.frame(t(combn(coders, 2)))))
# Assignment
coder.selection <- cbind(articles, coders=sample(unique.coder.combinations, 200, replace=TRUE))
# head(coder.selection)
# > head(coder.selection)
# articles coders
# [1,] "article_ 1" "coder_1 coder_5"
# [2,] "article_ 2" "coder_2 coder_4"
# [3,] "article_ 3" "coder_4 coder_6"
# [4,] "article_ 4" "coder_3 coder_7"
# [5,] "article_ 5" "coder_5 coder_7"
# [6,] "article_ 6" "coder_3 coder_4"
答案 1 :(得分:0)
不确定,但我认为朝着不同的方向去做。首先计算所有可能的“编码器配对”。
codepair <- combn(1:7,2)
然后将art_id
值随机分配到codepair
请注意,对于给定数量的对象,您需要一定数量的编码器。