R Language
Datum-tijd klassen (POSIXct en POSIXlt)
Zoeken…
Invoering
R bevat twee datum-tijdklassen - POSIXct en POSIXlt - zie ?DateTimeClasses
.
Opmerkingen
valkuilen
Met POSIXct geeft middernacht alleen de datum en tijdzone weer, hoewel de volledige tijd nog steeds is opgeslagen.
gerelateerde onderwerpen
Gespecialiseerde pakketten
- lubridate
Objecten met datum-tijd opmaken en afdrukken
# test date-time object options(digits.secs = 3) d = as.POSIXct("2016-08-30 14:18:30.58", tz = "UTC") format(d,"%S") # 00-61 Second as integer ## [1] "30" format(d,"%OS") # 00-60.99… Second as fractional ## [1] "30.579" format(d,"%M") # 00-59 Minute ## [1] "18" format(d,"%H") # 00-23 Hours ## [1] "14" format(d,"%I") # 01-12 Hours ## [1] "02" format(d,"%p") # AM/PM Indicator ## [1] "PM" format(d,"%z") # Signed offset ## [1] "+0000" format(d,"%Z") # Time Zone Abbreviation ## [1] "UTC"
Zie ?strptime
voor details over de indelingsstrings hier, evenals andere indelingen.
Tekenreeksen in datum-tijdobjecten parseren
De functies voor het parseren van een string in POSIXct en POSIXlt hebben vergelijkbare parameters en geven een vergelijkbaar uitziend resultaat, maar er zijn verschillen in hoe die datum-tijd wordt opgeslagen; zie "Opmerkingen".
as.POSIXct("11:38", # time string
format = "%H:%M") # formatting string
## [1] "2016-07-21 11:38:00 CDT"
strptime("11:38", # identical, but makes a POSIXlt object
format = "%H:%M")
## [1] "2016-07-21 11:38:00 CDT"
as.POSIXct("11 AM",
format = "%I %p")
## [1] "2016-07-21 11:00:00 CDT"
Merk op dat datum en tijdzone worden toegerekend.
as.POSIXct("11:38:22", # time string without timezone
format = "%H:%M:%S",
tz = "America/New_York") # set time zone
## [1] "2016-07-21 11:38:22 EDT"
as.POSIXct("2016-07-21 00:00:00",
format = "%F %T") # shortcut tokens for "%Y-%m-%d" and "%H:%M:%S"
Zie ?strptime
voor details over de indelingsstrings hier.
Notes
Ontbrekende elementen
- Als er geen datumelement wordt opgegeven, wordt dat van de huidige datum gebruikt.
- Als er geen tijdelement wordt opgegeven, wordt dat vanaf middernacht gebruikt, dat wil zeggen nullen.
- Als er geen tijdzone wordt opgegeven in de tekenreeks of de parameter
tz
, wordt de lokale tijdzone gebruikt.
Tijdzones
- De geaccepteerde waarden van
tz
afhankelijk van de locatie.-
CST
wordt gegeven met"CST6CDT"
of"America/Chicago"
-
- Gebruik voor ondersteunde locaties en tijdzones:
- In R:
OlsonNames()
- U kunt ook proberen in R:
system("cat $R_HOME/share/zoneinfo/zone.tab")
- In R:
- Deze locaties worden gegeven door Internet Assigned Numbers Authority (IANA)
Rekenkundige datum en tijd
Gebruik POSIXct om tijd toe te voegen / af te trekken, omdat het tijden in seconden opslaat
## adding/subtracting times - 60 seconds
as.POSIXct("2016-01-01") + 60
# [1] "2016-01-01 00:01:00 AEDT"
## adding 3 hours, 14 minutes, 15 seconds
as.POSIXct("2016-01-01") + ( (3 * 60 * 60) + (14 * 60) + 15)
# [1] "2016-01-01 03:14:15 AEDT"
Meer formeel kan as.difftime
worden gebruikt om perioden op te geven die moeten worden toegevoegd aan een datum- of datetime-object. bv:
as.POSIXct("2016-01-01") +
as.difftime(3, units="hours") +
as.difftime(14, units="mins") +
as.difftime(15, units="secs")
# [1] "2016-01-01 03:14:15 AEDT"
Gebruik difftime()
voor het verschil tussen datums / tijden voor verschillen in seconden, minuten, uren, dagen of weken.
# using POSIXct objects
difftime(
as.POSIXct("2016-01-01 12:00:00"),
as.POSIXct("2016-01-01 11:59:59"),
unit = "secs")
# Time difference of 1 secs
Gebruik seq.POSIXt()
of gewoon seq
om sequenties van datum-tijden te genereren.