3
我試圖創建一個數據集的隨機生成具有一些特定的屬性值:的R - 用整數隨機近似正態分佈預定義的總
- 所有的正整數比0
- 更大的兩列(X,Y)具有相等的金額(SUM(x)的==總和(Y))
- 具有大致正態分佈
我成功的東西,產生的數據接近我想要的東西,但它非常緩慢。由於while循環,我懷疑它很慢。
simSession <- function(sessionid = 1) {
s <- data.frame(sessionid = sessionid, userid = seq(1:12))
total <- sample(48:72, 1)
mu = total/4
sigma = 3
s$x <- as.integer(rnorm(mean=mu, sd=sigma, n=nrow(s)))
while(sum(s$x) > total) {
# i <- sample(nrow(s), 1)
i <- sample(rep(s$userid, s$x), 1)
if(s[i, ]$x > 1) {
s[i, ]$x <- s[i, ]$x - 1
} else {
s[i, ]$x = 1
}
}
s$y <- as.integer(rnorm(mean=mu, sd=sigma, n=nrow(s)))
while(sum(s$y) > sum(s$x)) {
# i <- sample(nrow(s), 1)
i <- sample(rep(s$userid, s$y), 1)
if(s[i, ]$y > 1) {
s[i, ]$y <- s[i, ]$y - 1
} else {
s[i, ]$y = 1
}
}
s$xyr <- s$x/s$y
return(s)
}
是否有明顯的東西我錯過了會使這個問題更容易或替代功能會更快?
此外,還可以指定參數向左或向右傾斜模式。