Déplacer les NA à droite dans un data.frame
Hello,
J'ai un data.frame ayant des valeurs manquantes (NA) et je cherche à les déplacer vers la droite.
Le code suivant permet de générer des exemples de mon problème :
Code:
1 2
| genExample <- function(nbCol=7,nbLin=4)
data.frame(matrix(runif(nbCol*nbLin)+sample(c(0,NA),nbCol*nbLin,TRUE,c(0.8,0.2)),ncol=nbCol)) |
Si je l'exécute, j'obtiens par exemple :
Code:
1 2 3 4 5 6
| > (dd <- genExample())
X1 X2 X3 X4 X5 X6 X7
1 0.4885394 0.7426915 NA 0.2103834 NA NA 0.08311188
2 0.2607933 NA 0.4812214 NA 0.04364146 0.1707916 NA
3 0.7486880 0.2456087 0.4043528 NA 0.13251084 NA 0.87925675
4 0.5115420 0.8985941 NA NA 0.40280238 NA 0.36108639 |
Et je voudrais obtenir ceci:
Code:
1 2 3 4 5
| X1 X2 X3 X4 X5 X6 X7
1 0.4885394 0.7426915 0.2103834 0.08311188 NA NA NA
2 0.2607933 0.4812214 0.04364146 0.1707916 NA NA NA
3 0.7486880 0.2456087 0.4043528 0.13251084 0.87925675 NA NA
4 0.5115420 0.8985941 0.40280238 0.36108639 NA NA NA |
Pour faire ceci, j'ai déjà réalisé un code qui utilise une boucle. Mais dans mon vrai problème, je n'ai pas 6 lignes mais plus de 100000 lignes et mon code est bien trop lent (plus de 8 heures!).
Pourriez-vous svp m'aider à faire un code optimal (apply(), vectorisation, ...) pour résoudre ce problème?
Merci :)