我正在尝试运行一个模拟,但希望找到一种高效的方法来实现这个目标。
样本数据:
我想做的是为每个月创建一个新的变量,并为该月生成一个随机值。我目前的方法是使用
这段代码能够运行,但效率不高。对于如何改进这段代码,你有什么建议吗?
样本数据:
month <- 1:12
a <- rep(10, 12)
dat1 <- data.frame(month, a)
sim_dat <- do.call(rbind, replicate(50, dat1, simplify = FALSE)) %>%
mutate(sim_index = rep(1:50, each = nrow(dat1)))
我想做的是为每个月创建一个新的变量,并为该月生成一个随机值。我目前的方法是使用
dplyr
,请参见下文:sim_dat1 <- sim_dat %>%
group_by(sim_index) %>%
mutate(mnth1 = ifelse(month == 1, a + rnorm(n()), NA),
mnth2 = ifelse(month == 2, a + rnorm(n()), NA),
mnth3 = ifelse(month == 3, a + rnorm(n()), NA),
mnth4 = ifelse(month == 4, a + rnorm(n()), NA),
mnth5 = ifelse(month == 5, a + rnorm(n()), NA),
mnth6 = ifelse(month == 6, a + rnorm(n()), NA),
mnth7 = ifelse(month == 7, a + rnorm(n()), NA),
mnth8 = ifelse(month == 8, a + rnorm(n()), NA),
mnth9 = ifelse(month == 9, a + rnorm(n()), NA),
mnth10 = ifelse(month == 10, a + rnorm(n()), NA),
mnth11 = ifelse(month == 11, a + rnorm(n()), NA),
mnth12 = ifelse(month == 12, a + rnorm(n()), NA))
这段代码能够运行,但效率不高。对于如何改进这段代码,你有什么建议吗?