高效50%随机选择r中两个数据帧列之一的值

时间:2017-11-18 16:58:01

标签: r dataframe random bigdata

我有一个大数据帧(以下只是一个例子): 我想随机选择(概率为50%)X1X2的价值。

> df = data.frame(matrix(rnorm(20), nrow=7))
> df
           X1         X2
1   0.7091409 -1.4061361
2  -1.1334614 -0.1973846
3   2.3343391 -0.4385071
4  -0.9040278 -0.6593677
5   0.4180331 -1.2592415
6   0.7572246 -0.5463655
7  -0.8996483  0.4231117

我想从X1或X2中随机选择并将其添加到新列中。

结果看起来应该是这样的:

 > df
               X1         X2     RC
    1   0.7091409 -1.4061361    -1.4061361
    2  -1.1334614 -0.1973846    -1.1334614
    3   2.3343391 -0.4385071    -0.4385071
    4  -0.9040278 -0.6593677    -0.6593677
    5   0.4180331 -1.2592415     0.4180331
    6   0.7572246 -0.5463655     0.7572246
    7  -0.8996483  0.4231117     0.4231117

为大数据数据帧执行此操作的最有效方法是什么?

1 个答案:

答案 0 :(得分:2)

具有ifelse功能的常用runif效果很好。如果数据帧中有100 000 000行,则8 GB RAM笔记本电脑需要几秒钟。

df = data.frame(matrix(rnorm(200000000), nrow=100000000))
df$RC <- ifelse(runif(nrow(df)) > 0.5, df$X1,df$X2)