Как правильно рандомизировать эти конкретные данные? - PullRequest
0 голосов
/ 09 ноября 2018

Я бы хотел рандомизировать тесты и порядок их версий. Мои данные должны выглядеть примерно так:

> #  subject    Test     t1 t2 t3 t4
> # 1      1    PFT      A  B  C  D
> # 2      1    AWT      B  C  D  A
> # 3      1    BWFT     (...)
> # 4      1    AUT
> # 5      1    DPD-WN
> # 6      1    DPT-NI
> # 7      2    AWT
> # (...)  250

Я нашел кое-что, что помогает мне частично:

seed <- 42 
blocksize <- 6
N <- 250 x 6

set.seed(seed)

subject = rep(1:ceiling(N/blocksize), each = blocksize)

a1 = data.frame(subject, rand=runif(length(subject)), envelope= 1:length(subject))

a2 = a1[order(a1$subject,a1$rand),]

a2$Test = rep(c("BWFT", "DPT-NI", "DPD-WN", "AUT", "PFT", "AWT"),times = length(subject)/6)

assign = a2[order(a2$envelope),]

head(assign,12)

Не могли бы вы помочь мне с остальными? Спасибо, любезно!

Я все ближе:

(versions <- replicate(10, sample(c("A","B","C","D"), 4, replace=F)))

1 Ответ

0 голосов
/ 09 ноября 2018

Вы можете сгенерировать матрицу нужных вам значений с помощью

tt <- t(replicate(nrow(a2), sample(LETTERS[1:4])))
colnames(tt) <- paste0("t", 1:4)

, а затем просто объедините это в свой фрейм данных

a2 <- cbind(a2, tt)
head(a2)
#   subject      rand envelope   Test t1 t2 t3 t4
# 3       1 0.2861395        3   BWFT  A  B  D  C
# 6       1 0.5190959        6 DPT-NI  C  B  A  D
# 5       1 0.6417455        5 DPD-WN  D  B  A  C
# 4       1 0.8304476        4    AUT  D  C  A  B
# 1       1 0.9148060        1    PFT  C  A  B  D
# 2       1 0.9370754        2    AWT  B  D  A  C
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...