I
gözlemleri olan bir veri çerçevem var ve her bir gözlem g
kategorilerinden birine ait. rasgele gözlemleri gruplara göre (bloklar)
set.seed(9782)
I <- 500
g <- 10
library(dplyr)
anon_id <- function(n = 1, lenght = 12) {
randomString <- c(1:n)
for (i in 1:n)
{
randomString[i] <- paste(sample(c(0:9, letters, LETTERS),
lenght, replace = TRUE),
collapse = "")
}
return(randomString)
}
df <- data.frame(id = anon_id(n = I, lenght = 16),
group = sample(1:g, I, T))
Ben rastgele olasılık
p
bazı vektör verilen
J
"urne" birine her gözlem atamak istiyoruz. Bu, J = 1'in p'ye [1] atanması olasılığıdır. Eklenen karmaşıklık, bu bloğu blokla yapmak istiyorum.
Ben blokları görmezden gelirsek, ben kolayca yapabilirsiniz:
J <- 3
p <- c(0.25, 0.5, 0.25)
df1 <- df %>% mutate(urn = sample(x = c(1:J), size = I, replace = T, prob = p))
ben "blok" bunu yapmak için bu yöntem hakkında düşüncelerini
# Block randomization
randomize_block <- function(g) {
df1 <- df %>% filter(group==g)
size <- nrow(df1)
df1 <- df1 %>% mutate(urn = sample(x = c(1:J),
size = size,
replace = T,
prob = p))
return(df1)
}
df2 <- lapply(1:g, randomize_block)
df2 <- data.table::rbindlist(df2)
daha iyi bir yolu var mı?
Eğer grup tarafından sadece grup mutasyona Can önce? – bramtayl
@bramtayl Bunun hakkında düşündüm, ancak bu durumda 'size' örnek işlevine nasıl geçeceğimi bilmiyorum. Her grup farklı sayıda gözlemlere sahip olabilir. – Ignacio
Kullan n() – bramtayl