2017-05-19 1 views
0

Je souhaite créer une nouvelle colonne qui va marquer une certaine quantité de colonnes 1 et le nombre restant de colonnes 0. Si je veux que 20% de mes colonnes aient cette option, je peux m'en rapprocher prenant:Exemple pour créer une nouvelle colonne

$ test Rand_Num < - échantillon (1: 5, nrow (test), replace = TRUE) $ test de sortie < - ifelse (test $ Rand_Num == 1,1,0)

Cependant Je voudrais pouvoir dire si j'ai eu 1000 colonnes alors 200 sont aléatoirement 1 et le reste sont étiquetés comme 0 que je peux changer rapidement à 30%, etc. pour différents scénarios.

Merci!

Répondre

0

Si vous souhaitez sélectionner au hasard des colonnes de telle sorte que 20% (ou un autre pourcentage) de colonnes sont sélectionnées au hasard, vous pouvez retourner un vecteur de colonnes sélectionnées (pour l'entrée data.frame df) avec

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

Pour en faire un vecteur de zéros et des uns, vous pouvez faire quelque chose comme

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

Certes, cela a du ruban adhésif en elle, mais il devrait fonctionner.