Store Time in R
Description
Store Time in R
Usage
pl$PTime(x, tu = c("s", "ms", "us", "ns"), format = "%H:%M:%S")
Arguments
x
|
an integer or double vector of n epochs since midnight OR a char vector of char times passed to as.POSIXct converted to seconds. |
tu
|
timeunit either "s","ms","us","ns" |
format
|
a format string passed to as.POSIXct format via … |
Details
PTime should probably be replaced with package nanotime or similar.
base R is missing encoding of Time since midnight "s" "ms", "us" and "ns". The latter "ns" is the standard for the polars Time type.
Use PTime to convert R doubles and integers and use as input to polars functions which needs a time.
Loosely inspired by data.table::ITime which is i32 only. PTime must support polars native timeunit is nanoseconds. The R double(float64) can imitate a i64 ns with full precision within the full range of 24 hours.
PTime does not have a time zone and always prints the time as is no matter local machine time zone.
An essential difference between R and polars is R prints POSIXct/lt without a timezone in local time. Polars prints Datetime without a timezone label as is (GMT). For POSIXct/lt taged with a timexone(tzone) and Datetime with a timezone(tz) the behavior is the same conversion is intuitive.
It appears behavior of R timezones is subject to change a bit in R 4.3.0, see polars unit test test-expr_datetime.R/"pl$date_range Date lazy/eager".
Value
a PTime vector either double or integer, with class "PTime" and attribute "tu" being either "s","ms","us" or "ns"
Examples
#> PTime [ double ]: number of epochs [ s ] since midnight
#> [1] "20:53:46 val: 75226" "15:16:09 val: 54969" "18:17:26 val: 65846"
#> [4] "12:17:14 val: 44234" "10:25:37 val: 37537"
#> PTime [ double ]: number of epochs [ ms ] since midnight
#> [1] "13:24:53:843ms val: 48293843" "03:51:35:537ms val: 13895537"
#> [3] "00:22:44:074ms val: 1364074" "18:56:00:846ms val: 68160846"
#> [5] "07:34:24:744ms val: 27264744"
#> PTime [ double ]: number of epochs [ us ] since midnight
#> [1] "17:53:00:964_996us val: 64380964996" "18:33:58:756_413us val: 66838756413"
#> [3] "10:41:32:010_609us val: 38492010609" "05:53:43:255_352us val: 21223255352"
#> [5] "14:41:33:290_271us val: 52893290271"
#> PTime [ double ]: number of epochs [ ns ] since midnight
#> [1] "07:25:10:387_086_868ns val: 26710387086868"
#> [2] "18:11:14:269_265_681ns val: 65474269265681"
#> [3] "17:18:53:056_973_665ns val: 62333056973665"
#> [4] "02:52:42:712_148_576ns val: 10362712148576"
#> [5] "17:35:03:711_254_149ns val: 63303711254149"
#> PTime [ double ]: number of epochs [ s ] since midnight
#> [1] "23:59:59 val: 86399"
#> polars Series: shape: (5,)
#> Series: '' [time]
#> [
#> 16:18:59
#> 06:42:09
#> 19:48:48
#> 06:20:17
#> 05:24:14
#> ]
#> polars Series: shape: (1,)
#> Series: '' [time]
#> [
#> 23:59:59
#> ]
#> PTime [ double ]: number of epochs [ ns ] since midnight
#> [1] "23:59:59:000_000_000ns val: 8.6399e+13"