根据其他分组变量生成具有不同参数的数据

时间:2016-11-27 21:45:41

标签: r simulation apply

我试图根据其他三个分组变量生成具有不同参数的正常随机变量。有关详细信息,请参阅下面的示例(假设我有两个明智的分组变量):

V1 <- rep(c(1,2,3), each = 3, times = 2) # first grouping variable
V2 <- rep(c(1,2,3), times = 6) # 2nd grouping variable
V <- cbind(V1,V2)

显然,我有9种不同的情况{(1,1),(1,2),......(3,3)}。所以我想使用rnorm(n = 1, mean = x, sd = 20)生成V3,其中x因具体情况而异。

我知道我可以使用if,但对于大量数据,它不会是一个不错的选择。我使用以下代码(这里只是示例):

V3 <- 
rnorm(n = sum(V[,1] == 1 & V[,2] == 1), mean = 1, sd = 20)*(V[,1] == 1 & V[,2] == 1)+
rnorm(n = sum(V[,1] == 1 & V[,2] == 2), mean = 2, sd = 20)*(V[,1] == 1 & V[,2] == 2)+
rnorm(n = sum(V[,1] == 1 & V[,2] == 3), mean = 3, sd = 20)*(V[,1] == 1 & V[,2] == 3)+
rnorm(n = sum(V[,1] == 2 & V[,2] == 1), mean = 4, sd = 20)*(V[,1] == 2 & V[,2] == 1)+
rnorm(n = sum(V[,1] == 2 & V[,2] == 2), mean = 5, sd = 20)*(V[,1] == 2 & V[,2] == 2)+
rnorm(n = sum(V[,1] == 2 & V[,2] == 3), mean = 6, sd = 20)*(V[,1] == 2 & V[,2] == 3)+
rnorm(n = sum(V[,1] == 3 & V[,2] == 1), mean = 7, sd = 20)*(V[,1] == 3 & V[,2] == 1)+
rnorm(n = sum(V[,1] == 3 & V[,2] == 2), mean = 8, sd = 20)*(V[,1] == 3 & V[,2] == 2)+
rnorm(n = sum(V[,1] == 3 & V[,2] == 3), mean = 9, sd = 20)*(V[,1] == 3 & V[,2] == 3)

同样,我的数据很多,有很多不同的群体,所以这不是一种有效的方法。我也可以使用for loop,但我试图避免它。我想使用apply,但不确定它是否适用于此。

任何建议表示赞赏。感谢

0 个答案:

没有答案