用于创建新列的示例

时间:2017-05-19 22:13:23

标签: r sampling

我想创建一个新列,它将标记一定数量的列1和剩余的列数0.如果我希望20%的列具有此选项,我可以接受:

测试$ Rand_Num< - sample(1:5,nrow(test),replace = TRUE) test $ Output< - ifelse(test $ Rand_Num == 1,1,0)

但是我希望能够说如果我有1000列然后200个随机1,其余标记为0,我可以快速更改为30%等等。针对不同的场景。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果要随机选择列,以便随机选择20%(或其他一些百分比)的列,则可以返回选定列的向量(对于输入data.frame df

p <- 0.2  # change me!
nselect <- round(p*ncol(df), 0)
whichcolumns <- sample(1:ncol(df), nselect)

要将其转换为0和1的向量,您可以执行类似

的操作
whichcolumns_01 <- rep(0, ncol(df))
whichcolumns_01[whichcolumns] <- 1

不可否认,这里有一些胶带,但它应该可以使用。