Comment puis-je supprimer les premiers éléments d'une variable, en particulier si cette variable a des caractères spéciaux. Par exemple, j'ai la colonne suivante:
Date
01/01/2009
01/01/2010
01/01/2011
01/01/2012
J'ai besoin d'une nouvelle colonne comme celle-ci:
Date
2009
2010
2011
2012
si toutes vos dates ont la même largeur, vous pouvez les mettre dans un vecteur et utiliser une sous-chaîne
Date
a <- c("01/01/2009", "01/01/2010" , "01/01/2011")
substring(a,7,10) #This takes string and only keeps the characters beginning in position 7 to position 10
sortie
[1] "2009" "2010" "2011"
Comme indiqué dans les commentaires, cela peut être réalisé en convertissant l'entrée au format Date
et en extrayant l'année, par exemple comme ceci:
format(as.Date(df1$Date, format="%d/%m/%Y"),"%Y")
library(lubridate)
a=mdy(b)
year(a)
https://cran.r-project.org/web/packages/lubridate/vignettes/lubridate.htmlhttp://vita.had.co.nz/papers/lubridate.pdf
Lorsque vous convertissez votre variable en Date
:
date <- as.Date('10/30/2018','%m/%d/%Y')
vous pouvez ensuite découper les éléments de votre choix et créer de nouvelles variables, telles que l'année:
year <- as.numeric(format(date,'%Y'))
ou mois:
month <- as.numeric(format(date,'%m'))
Ceci est plus un conseil qu'une réponse spécifique, mais ma suggestion est de convertir les variables date par date immédiatement, plutôt que de les conserver sous forme de chaînes. De cette façon, vous pouvez utiliser les fonctions de date (et d’heure) dessus, plutôt que d’essayer d’utiliser des solutions de contournement très problématiques.
Comme indiqué, le pack de lubrifiant a des fonctions d’extraction Nice.
Pour certains projets, j’ai trouvé qu’il était utile de rattacher les dates dès le début: créer les variables année, mois, jour (du mois) et jour (de la semaine) par exemple .Cela simplifie les résumés, les tableaux et les graphiques, car le code d'extraction est distinct du code de résumé/tableau/graphique, et parce que si vous devez le modifier, vous n'avez pas à déployer ces modifications dans plusieurs emplacements.
Si vous utilisez le package date
, vous pouvez le faire assez facilement.
library(date)
Date <- c("01/01/2009", "01/01/2010", "01/01/2011", "01/01/2012")
Date <- as.date(Date)
Date
# [1] 1Jan2009 1Jan2010 1Jan2011 1Jan2012
date.mdy(Date)$year
# [1] 2009 2010 2011 2012
# be aware that these are now integers:
str(date.mdy(Date)$year)
# int [1:4] 2009 2010 2011 2012