我试图根据其他三个分组变量生成具有不同参数的正常随机变量。有关详细信息,请参阅下面的示例(假设我有两个明智的分组变量):
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
,但不确定它是否适用于此。
任何建议表示赞赏。感谢