我想创建一个新列,它将标记一定数量的列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%等等。针对不同的场景。
谢谢!
答案 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
不可否认,这里有一些胶带,但它应该可以使用。