R Language
La classe de date
Recherche…
Remarques
Rubriques connexes
Notes brouillées
-
Date
: stocke l'heure en nombre de jours depuis l'époque UNIX le1970-01-01
. avec des valeurs négatives pour les dates antérieures. - Il est représenté par un entier (toutefois, il n'est pas appliqué dans la représentation interne)
- Ils sont toujours imprimés selon les règles du calendrier grégorien actuel, même si le calendrier n'a pas été utilisé depuis longtemps.
- Il ne suit pas les fuseaux horaires, il ne doit donc pas être utilisé pour tronquer le temps passé sur les objets
POSIXct
ouPOSIXlt
. -
sys.Date()
renvoie un objet de classeDate
Plus de notes
- lubridate 's
ymd
,mdy
, etc sont des alternatives àas.Date
quias.Date
aussi la classe Date; voir Analyse des dates et des durées de temps à partir de chaînes avec lubridate . - data.table classe iDate expérimentale de dérive de et est le plus souvent interchangeable avec la date, mais est stocké comme nombre entier au lieu de deux.
Dates de mise en forme
Pour mettre en forme les Dates
nous utilisons la fonction format(date, format="%Y-%m-%d")
avec soit POSIXct
(donné à partir de as.POSIXct()
) ou POSIXlt
(donné à partir as.POSIXlt()
)
d = as.Date("2016-07-21") # Current Date Time Stamp format(d,"%a") # Abbreviated Weekday ## [1] "Thu" format(d,"%A") # Full Weekday ## [1] "Thursday" format(d,"%b") # Abbreviated Month ## [1] "Jul" format(d,"%B") # Full Month ## [1] "July" format(d,"%m") # 00-12 Month Format ## [1] "07" format(d,"%d") # 00-31 Day Format ## [1] "21" format(d,"%e") # 0-31 Day Format ## [1] "21" format(d,"%y") # 00-99 Year ## [1] "16" format(d,"%Y") # Year with Century ## [1] "2016"
Pour plus, voir ?strptime
.
Rendez-vous
Pour contraindre une variable à une date, utilisez la fonction as.Date()
.
> x <- as.Date("2016-8-23")
> x
[1] "2016-08-23"
> class(x)
[1] "Date"
La fonction as.Date()
vous permet de fournir un argument de format. La valeur par défaut est %Y-%m-%d
, soit Année-mois-jour.
> as.Date("23-8-2016", format="%d-%m-%Y") # To read in an European-style date
[1] "2016-08-23"
La chaîne de format peut être placée entre deux guillemets simples ou entre guillemets. Les dates sont généralement exprimées sous diverses formes telles que: "dm-yy"
ou "dm-YYYY"
ou "md-yy"
ou "md-YYYY"
ou "YYYY-md"
ou "YYYY-dm"
. Ces formats peuvent également être exprimés en remplaçant "-"
par "/"
. De plus, les dates sont également exprimées sous les formes, par exemple "6 novembre 1986" ou "6 novembre 1986" ou "6 novembre 1986" ou "6 novembre 1986", etc. La fonction as.Date () accepte toutes ces chaînes de caractères et lorsque nous mentionnons le format approprié de la chaîne, elle affiche toujours la date sous la forme "YYYY-md"
.
Supposons que nous ayons une chaîne de date "9-6-1962"
au format "%d-%m-%Y"
.
#
# It tries to interprets the string as YYYY-m-d
#
> as.Date("9-6-1962")
[1] "0009-06-19" #interprets as "%Y-%m-%d"
>
as.Date("9/6/1962")
[1] "0009-06-19" #again interprets as "%Y-%m-%d"
>
# It has no problem in understanding, if the date is in form YYYY-m-d or YYYY/m/d
#
> as.Date("1962-6-9")
[1] "1962-06-09" # no problem
> as.Date("1962/6/9")
[1] "1962-06-09" # no problem
>
En spécifiant le format correct de la chaîne d'entrée, nous pouvons obtenir les résultats souhaités. Nous utilisons les codes suivants pour spécifier les formats à la fonction as.Date () .
Code de format | Sens |
---|---|
%d | journée |
%m | mois |
%y | année en 2 chiffres |
%Y | année en 4 chiffres |
%b | mois abrégé en 3 caractères |
%B | Nom complet du mois |
Prenons l'exemple suivant en spécifiant le paramètre de format :
> as.Date("9-6-1962",format="%d-%m-%Y")
[1] "1962-06-09"
>
Le format du nom du paramètre peut être omis.
> as.Date("9-6-1962", "%d-%m-%Y")
[1] "1962-06-09"
>
Quelques fois, les noms des mois abrégés aux trois premiers caractères sont utilisés dans l'écriture des dates. Dans ce cas, nous utilisons le spécificateur de format %b
.
> as.Date("6Nov1962","%d%b%Y")
[1] "1962-11-06"
>
Notez que, dans la chaîne de date, il n'y a pas d'espaces '-'
ou '/'
ou de blancs entre les membres. La chaîne de format doit correspondre exactement à cette chaîne d'entrée. Prenons l'exemple suivant:
> as.Date("6 Nov, 1962","%d %b, %Y")
[1] "1962-11-06"
>
Notez que la chaîne de date contient une virgule et donc une virgule dans la spécification du format. Si la virgule est omise dans la chaîne de format, il en résulte une NA
. Voici un exemple d'utilisation du spécificateur de format %B
:
> as.Date("October 12, 2016", "%B %d, %Y")
[1] "2016-10-12"
>
> as.Date("12 October, 2016", "%d %B, %Y")
[1] "2016-10-12"
>
%y
format %y
est spécifique au système et doit donc être utilisé avec prudence. Les autres paramètres utilisés avec cette fonction sont l' origine et tz (fuseau horaire).
Analyse de chaînes en objets de date
R contient une classe Date, créée avec as.Date()
, qui prend une chaîne ou un vecteur de chaînes et, si la date n'est pas au format de date ISO 8601 YYYY-MM-DD
, une chaîne de strptime
jetons de style strptime
.
as.Date('2016-08-01') # in ISO format, so does not require formatting string
## [1] "2016-08-01"
as.Date('05/23/16', format = '%m/%d/%y')
## [1] "2016-05-23"
as.Date('March 23rd, 2016', '%B %drd, %Y') # add separators and literals to format
## [1] "2016-03-23"
as.Date(' 2016-08-01 foo') # leading whitespace and all trailing characters are ignored
## [1] "2016-08-01"
as.Date(c('2016-01-01', '2016-01-02'))
# [1] "2016-01-01" "2016-01-02"