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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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