Comment rendre aléatoire (ou permuter) un dataframe rowwise et columnwise?

J'ai un dataframe (df1) comme ceci.

     f1   f2   f3   f4   f5
d1   1    0    1    1    1  
d2   1    0    0    1    0
d3   0    0    0    1    1
d4   0    1    0    0    1

La d1...d4 colonne est la rowname, la f1...f5 ligne est columnname.

À faire de l'échantillon(df1), je reçois un nouveau dataframe avec le comte de 1 même que df1. Ainsi, le nombre de 1 est conservée pour l'ensemble du dataframe, mais pas pour chaque ligne ou chaque colonne.

Est-il possible de faire la randomisation de la ligne ou de la colonne sage?

Je veux rendre aléatoire le df1 les colonnes pour chaque colonne, c'est à dire le nombre de 1 dans chaque colonne reste le même. et chaque colonne doivent être changés au moins une fois. Par exemple, j'ai peut-être une étude randomisée df2 comme ceci: (a Noté que le nombre de 1 dans chaque colonne reste le même, mais le nombre de 1 dans chaque ligne est différente.

     f1   f2   f3   f4   f5
d1   1    0    0    0    1  
d2   0    1    0    1    1
d3   1    0    0    1    1
d4   0    0    1    1    0

De même, je tiens également à rendre aléatoire le df1 ligne sage pour chaque ligne, c'est à dire le pas. de 1 dans chaque ligne reste la même, et chaque ligne besoin d'être changé (mais pas de changé les entrées peuvent être différents). Par exemple, une étude randomisée df3 pourrait être quelque chose comme ceci:

     f1   f2   f3   f4   f5
d1   0    1    1    1    1  <- two entries are different
d2   0    0    1    0    1  <- four entries are different
d3   1    0    0    0    1  <- two entries are different
d4   0    0    1    0    1  <- two entries are different

PS. Merci beaucoup pour l'aide à partir de Gavin Simpson, Joris Meys et de la chasse pour les réponses à ma question précédente sur la randomisation des deux colonnes.

  • vous voulez permuter les lignes et les colonnes en même temps. En relisant cela, il semble que la contrainte de colonne (même nombre de 1 dans chaque colonne) ne tient pas dans votre deuxième exemple permutant les lignes.
  • S'il vous plaît ne pas signer pour plusieurs comptes. J'ai demandé à la modération de fusionner le compte que vous avez utilisé ici est celle qui est utilisée sur les précédentes Q.
InformationsquelleAutor a83 | 2011-06-21