使用随机数创建数据框

时间:2014-09-30 10:56:39

标签: r dataframe

我是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的列。

3 个答案:

答案 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)

这很简单:

  • 选择观察次数N = 100
  • 使用rnorm
  • 标准法线中的样本
  • 使用sample
  • 对1到10之间的数字进行抽样
  • 使用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))