Não sei se entendi bem, mas para gerar fatores com níveis com número diferente de ocorrência você pode começar usando rep(), se o número de repetições é fixo/conhecido, ou sample() se o número de repetições é aleatório, enfim.

da <- data.frame(F1 = rep(LETTERS[1:4], c(4, 6, 10, 20)),
                 F2 = sample(1:3, size = 40, replace = TRUE))
str(da)

xtabs(~F1 + F2, data = da)

À disposição.
Walmes.