Pourquoi suis-je “nombre d'éléments à remplacer n'est pas un multiple de la longueur de remplacement”
J'ai un dataframe combi, y compris deux variables DT et OD.
J'ai un peu de valeurs manquantes NA dans les deux DT et OD, mais pas nécessaire de le même enregistrement.
J'ai ensuite essayer de remplacer les valeurs manquantes dans DT avec DO si DO n'est pas absente, mais de récupérer l'avertissement "nombre d'éléments à remplacer n'est pas un multiple de la longueur de remplacement". Je peux voir qu'il signifie un décalage en longueur, mais je ne comprends pas pourquoi deux colonnes dans la même dataframe peuvent être de longueur différente. Plus sérieusement, la sortie n'est pas entièrement correcte (voir ci-dessous)
combi$DT[is.na(combi$DT) & ! is.na(combi$OD) ] <- combi$OD
Sortie
id DT OD
67 2010-12-12 2010-12-12
68 NA NA
69 NA 2010-12-12
70 NA NA
Je me serais attendu à DT
être 2010-12-12
pour id=69
(les Dates sont POSIXct).
Il doit y avoir quelque chose que je ne comprends pas de longueur dans dataframes. Quelqu'un peut m'aider?
OriginalL'auteur Jørgen K. Kanters | 2016-08-03
Vous devez vous connecter pour publier un commentaire.
Car le nombre d'éléments à remplacer n'est pas un multiple de remplacement de la longueur. Le nombre d'éléments à remplacer est le nombre de lignes où
is.na(combi$DT) & !is.na(combi$OD)
qui est moins que le nombre de lignes danscombi
(et donc de la durée de remplacement).Vous devez utiliser
ifelse
:N. B. le
& !is.na(combi$OD)
est redondant: si les deux sontNA
, le remplacement seraNA
. De sorte que vous pouvez simplement utiliserOriginalL'auteur Hugh
L'avertissement est produit parce que vous essayez d'affecter tous les
combi$OD
les lieux oùcombi$DT
est NA. Par exemple, si vous avez 100 lignes de 2 variables avec 5 NAs, puis vous la raconter à remplacer ces 5 NAs de variable1 avec les 100 valeurs de variable2. D'où l'avertissement. Essayez plutôt ceci,Merci d'aider un débutant comme moi. Je n'étais pas au courant de cette fonctionnalité. J'ai cliqué sur la accepté de signer.
Pas de problème. Heureux de vous aider
OriginalL'auteur Sotos