Je souhaite définir la valeur NA
sur certaines lignes/colonnes dans une trame de données antérieure à une certaine date. Mais chaque colonne a une date/critère différent. Alors, comment cela fonctionnerait-il?Définition de certaines valeurs sur une trame de données en fonction d'un critère de date
Exemple dataframe:
dates <- c("01/01/2015", "06/15/2015", "11/30/2015")
a <- c(1, 2, 3)
b <- c(2, 4, 6)
c <- c(3, 5, 9)
df <- data.frame(Date = dates, A = a, B = b, C = c)
startDate <- c("02/20/2015", "07/28/2015", "12/01/2015")
Alors mon data.frame ressemblerait à ceci:
Date A B C
01/01/2015 1 2 3
06/15/2015 2 4 5
11/30/2015 3 6 9
En utilisant les startDate
que mes critères, je veux mettre toute valeur avant cette date dans le rapport colonne à NA
afin que mon résultat final ressemblerait à ceci:
Date A B C
01/01/2015 NA NA NA
06/15/2015 2 NA NA
11/30/2015 3 6 NA
Quelqu'un peut-il m'aider s'il vous plaît? Btw, mon vrai data.frame a environ 20+ colonnes. Ce qui précède est juste un petit exemple de mon problème réel.
Merci d'avance!
Merci pour cela - cependant, cela ne fonctionnerait pas nécessairement de remplacer avec des zéros NA dans l'étape suivante s'il y a des valeurs après la startDate qui sont nuls, non? – RiddleMeThis
@RiddleMeThis, La sortie devrait être ce que vous voulez maintenant. Pas besoin de convertir en 'NA' à l'étape suivante. –
Je pense qu'il est préférable de ne pas multiplier par m mais de diviser par m à la place. Cela vous donnera des valeurs NaN et Inf que vous pouvez ensuite utiliser quelque chose comme do.call (df, lapply (df, fonction (x) remplacer (x, is.infinite (x), NA))) pour convertir les valeurs en NAs . Merci beaucoup! Cela m'aide vraiment. – RiddleMeThis