我真的很感激这方面的一些帮助!我想创建一个包含4列的数据表:
ROUTE SCENE REPEAT CONTEXT
A 1 1 YES
A 2 1 NO
A 3 1 NO
每条路线有6条路线(A-F)和10个路线(1-10)。每条路线需要重复10次,因此REPEAT列的值为1-10,如下所示:
ROUTE SCENE REPEAT CONTEXT
A 1 1 YES
A 2 1 NO
A 3 1 NO
.
.
B 1 1 NO
B 2 1 YES
.
.
A 1 2 NO
A 2 2 YES
A 3 2 YES
数据表中总共有600行。
我正在努力获得正确的CONTEXT专栏。对于每个路径(A-F),5行CONTEXT列必须具有值YES,5行必须具有值NO,但是以随机顺序。此外,在每个路线A-F的所有10次迭代中,每个唯一场景必须出现5次,CONTEXT = YES,5次出现CONTEXT = NO。例如:
ROUTE SCENE REPEAT CONTEXT
A 1 1 YES
.
A 1 2 NO
.
A 1 3 YES
.
A 1 4 NO
.
.
A 1 10 NO
这就是我试图做的事情:
library(data.table)
randomiser <- function(i,j){
context_combo <- rep(c('YES','NO'), 5)
set <- data.table(
ROUTE = i,
SCENE = seq(1:10),
REPEAT = j,
CONTEXT = sample(context_combo, size = 10, replace = FALSE))
return(set)
}
i = rep(rep(c("A","B","C","D","E","F"), each = 10), 10)
j = rep(c(1:10), each = 60)
newDT <- randomiser(i,j)
然而,对于ROUTE的每个值和整个数据表中REPEAT的每个值,这给出了与CONTEXT相同的“是/否”序列。我不知道如何更改代码,以便每个路径的YES / NO顺序是随机的,因此对于每个路径的所有10次迭代中的每个场景,有5个CONTEXT = YES和5个CONTEXT =没有。
答案 0 :(得分:0)
IIUC,您希望创建一个YES和NO的上下文列,每个列随机抽样5次。你可以这样做:
# sample data
df <- data.table(route = rep(LETTERS[1:6], each=10), scene = rep(1:10, 6))
# result
df[,context := sample(rep(c('YES','NO'), each=5)),.(route)]
head(df, 10)
route scene context
1: A 1 NO
2: A 2 NO
3: A 3 YES
4: A 4 NO
5: A 5 YES
6: A 6 YES
7: A 7 YES
8: A 8 NO
9: A 9 NO
10: A 10 YES
11: B 1 YES
12: B 2 YES
13: B 3 YES
14: B 4 NO
15: B 5 NO