R Language
De datumklasse
Zoeken…
Opmerkingen
gerelateerde onderwerpen
Door elkaar gegooide aantekeningen
-
Date
: Slaat de tijd op als het aantal dagen sinds het UNIX-tijdperk op1970-01-01
. met negatieve waarden voor eerdere datums. - Het wordt weergegeven als een geheel getal (het wordt echter niet afgedwongen in de interne weergave)
- Ze worden altijd afgedrukt volgens de regels van de huidige Gregoriaanse kalender, hoewel de kalender lang niet in gebruik was.
- Het houdt geen tijdzones bij, dus het moet niet worden gebruikt om de tijd van
POSIXct
ofPOSIXlt
objecten af tePOSIXlt
. -
sys.Date()
retourneert een object van klasseDate
Meer aantekeningen
- lubridate 's
ymd
,mdy
, etc. zijn alternatieven vooras.Date
die ook ontleden naar Date-klasse; zie Datums en datatijden van strings parseren met lubridate . - data.table is experimenteel iDate klasse afgeleid van en is meestal uitwisselbaar met datum, maar wordt opgeslagen als geheel in plaats van dubbele.
Datums opmaken
Om Dates
te formatteren, gebruiken we de functie format(date, format="%Y-%m-%d")
met de POSIXct
(gegeven als as.POSIXct()
) of POSIXlt
(gegeven als 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"
Zie ?strptime
voor meer ?strptime
.
data
Gebruik de functie as.Date()
om een variabele naar een datum te dwingen.
> x <- as.Date("2016-8-23")
> x
[1] "2016-08-23"
> class(x)
[1] "Date"
Met de functie as.Date()
kunt u een as.Date()
. De standaardwaarde is %Y-%m-%d
, wat jaar-maand-dag is.
> as.Date("23-8-2016", format="%d-%m-%Y") # To read in an European-style date
[1] "2016-08-23"
De opmaakreeks kan binnen een paar enkele aanhalingstekens of dubbele aanhalingstekens worden geplaatst. Datums worden meestal uitgedrukt in verschillende vormen, zoals: "dm-yy"
of "dm-YYYY"
of "md-yy"
of "md-YYYY"
of "YYYY-md"
of "YYYY-dm"
. Deze indelingen kunnen ook worden uitgedrukt door "-"
vervangen door "/"
. Verder worden datums ook uitgedrukt in de vormen, bijvoorbeeld: "6 november 1986" of "6 november 1986" of "6 november 1986" of "6 november 1986" enzovoort. De functie as.Date () accepteert al dergelijke tekenreeksen en wanneer we het juiste formaat van de tekenreeks vermelden, wordt de datum altijd uitgevoerd in de vorm "YYYY-md"
.
Stel dat we een "9-6-1962"
in de notatie "%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
>
Door het juiste formaat van de invoertekenreeks op te geven, kunnen we de gewenste resultaten krijgen. We gebruiken de volgende codes voor het opgeven van de indelingen voor de functie as.Date () .
Code opmaken | Betekenis |
---|---|
%d | dag |
%m | maand |
%y | jaar in 2 cijfers |
%Y | jaar in 4 cijfers |
%b | afgekorte maand in 3 tekens |
%B | volledige naam van de maand |
Beschouw het volgende voorbeeld het opgeven van de parameter format:
> as.Date("9-6-1962",format="%d-%m-%Y")
[1] "1962-06-09"
>
Het formaat van de parameternaam kan worden weggelaten.
> as.Date("9-6-1962", "%d-%m-%Y")
[1] "1962-06-09"
>
Soms worden namen van de maanden afgekort tot de eerste drie tekens gebruikt bij het schrijven van de datums. In dat geval gebruiken we de opmaakspecificatie %b
.
> as.Date("6Nov1962","%d%b%Y")
[1] "1962-11-06"
>
Merk op dat er geen '-'
of '/'
of witte spaties tussen de leden in de datumreeks staan. De opmaakreeks moet exact overeenkomen met die invoerreeks. Overweeg het volgende voorbeeld:
> as.Date("6 Nov, 1962","%d %b, %Y")
[1] "1962-11-06"
>
Merk op dat er een komma in de datumreeks staat en dus ook een komma in de opmaakspecificatie. Als komma's worden weggelaten in de opmaakreeks, resulteert dit in een NA
. Een voorbeeld van het gebruik van de specificator %B
indeling is als volgt:
> 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
indeling %y
is systeemspecifiek en moet daarom met voorzichtigheid worden gebruikt. Andere parameters die met deze functie worden gebruikt, zijn oorsprong en tz (tijdzone).
Tekenreeksen in datumobjecten parseren
R bevat een as.Date()
, die is gemaakt met as.Date()
, waarvoor een string of vector van strings nodig is, en als de datum niet in ISO 8601 datumnotatie YYYY-MM-DD
, een opmaakreeks van strptime
style tokens .
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"