我想生成一个具有三列(A,B和C)的大型数据框(100000行和3列)。

该数据帧满足两个条件:


在每一行中,A+B+C=1;
所有A具有三角形分布(min = 0.2,mod = 0.3,max = 0.4),所有B具有三角形分布(min = 0.3,mod = 0.4,max = 0.5),所有C具有三角形分布(最小值= 0.1,模数= 0.3,最大值= 0.5)


我不知道如何生成这种数据集。

非常感谢您的建议。

松超

最佳答案

N <- 100000

library(triangle)

A <- rtriangle(N, 0.2, 0.4, 0.3)
B <- rtriangle(N, 0.3, 0.5, 0.4)
C <- 1 - A - B

d = data.frame(A, B, C)
summary(d)


以后修改

nr <- 100000

u1 <- runif(nr)
u2 <- runif(nr)
u3 <- (2 - u1 - u2) / 2

U <- cbind(u1, u2, u3)

# shuffle, because I am not sure about the tails of u3
for (i in (1:nrow(U))) {
  U[i, ] <- U[i, sample(1:3)]
}

t1 <- qtriangle(U[, 1], 0.2, 0.4, 0.3)
t2 <- qtriangle(U[, 2], 0.3, 0.5, 0.4)
t3 <- qtriangle(U[, 3], 0.1, 0.5, 0.3)

d <- cbind(t1, t2, t3)
summary(d)
cor(d)

关于r - 生成具有三列的数据帧,每一行具有恒定的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47748746/

10-10 14:08
查看更多