我是R.的新手 我想要一个8列的数据框,随机数字如下: -
V1 V2 V3..... V8
1 101 1 1
2 102 0 1
3 103 0 1
. . . .
. . . .
. . . .
. . . .
100 200 1 0
V3-V8是仅包含序列1和0的列。
答案 0 :(得分:3)
尝试
n <- 100 ; m <- 200 ; reps <- 6
as.data.frame(cbind(matrix(seq_len(m), n, m/n),
replicate(reps, sample(c(0, 1), n, replace = TRUE))))
# V1 V2 V3 V4 V5 V6 V7 V8
# 1 1 101 0 1 1 0 0 0
# 2 2 102 1 1 1 0 0 1
# 3 3 103 0 0 0 1 1 1
# 4 4 104 1 1 0 1 1 0
# ...
其中n
是行数。 m
是您希望在第一列中seq_len
的号码。 reps
是您要添加的列数,其中0到1之间的随机数
答案 1 :(得分:2)
@ David Arenburg的另一种解决方案
as.data.frame(cbind(matrix(seq_len(n*n1), ncol=n1),
matrix(sample(0:1, n*reps, replace=TRUE), ncol=reps)))
其中,
n <- 100; reps <- 6; n1 <- 2
n
是行数,reps
是带有随机数的列数,n1
是初始列数
答案 2 :(得分:1)
这很简单:
rnorm
sample
sample
runif
以均匀分布进行采样,并使用1*(runif(N) < p)
以下是代码:
N <- 100
df <- data.frame(id = 1:N, x1 = rnorm(N), x2 = sample(1:10, size = N, replace = TRUE), x3 = sample(letters[1:10], size = N, replace = TRUE), x4 = 1*(runif(n = N) < .75))