web-dev-qa-db-fra.com

Extrait année de date

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
47
hbtf.1046

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"
13
Alexander

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")
109
RHertel
36
Ajay Ohri

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'))
4
invictus

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.

1
Barry DeCicco

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
0
gung