使用expand.grid生成具有指定频率分布的因子组合?

时间:2015-03-02 06:28:59

标签: r

假设我有:

data <- expand.grid(factor1 = c("a","b"),
                    factor2 = c("left","right"),
                    factor3 = c("up","down"))

假设我想从这个数据帧中复制行,这样我就可以定义每个因子的频率分布,并且尽可能少地复制每一行以满足该分布。例如,如果我将“factor1”的频率定义为(.5,.5),将“factor2”定义为(.25,。75),将“factor3”定义为(.4,.6),则我的数据框必须有2 X 4 X 5 = 40总行数。我可以这样做:

data2 <- expand.grid(factor1 = c("a","b"),
                     factor2 = c("left",rep("right",3)),
                     factor3 = c(rep("up",2),rep("down",3)))

但这只有在我提前了解频率的情况下才有效 - 即便如此,从那里开始({.4,.6)到c(rep("a",2),rep("b",3))似乎也不那么优雅。有什么更好的方法呢?

0 个答案:

没有答案