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] "08:49:33 val: 31773" "13:36:48 val: 49008" "20:54:19 val: 75259"
#> [4] "03:43:15 val: 13395" "09:09:51 val: 32991"
#> PTime [ double ]: number of epochs [ ms ] since midnight
#> [1] "14:01:49:018ms val: 50509018" "10:40:17:034ms val: 38417034"
#> [3] "15:31:52:243ms val: 55912243" "09:42:17:437ms val: 34937437"
#> [5] "23:28:40:297ms val: 84520297"
#> PTime [ double ]: number of epochs [ us ] since midnight
#> [1] "05:35:53:726_090us val: 20153726090" "01:45:38:257_413us val: 6338257413"
#> [3] "03:04:57:142_966us val: 11097142966" "18:36:05:377_251us val: 66965377251"
#> [5] "19:53:04:347_590us val: 71584347590"
#> PTime [ double ]: number of epochs [ ns ] since midnight
#> [1] "13:38:25:064_852_535ns val: 49105064852535"
#> [2] "09:33:08:876_800_239ns val: 34388876800239"
#> [3] "04:41:37:776_460_647ns val: 16897776460647"
#> [4] "04:25:47:898_651_659ns val: 15947898651659"
#> [5] "21:06:06:907_303_780ns val: 75966907303780"
#> PTime [ double ]: number of epochs [ s ] since midnight
#> [1] "23:59:59 val: 86399"
#> polars Series: shape: (5,)
#> Series: '' [time]
#> [
#> 21:00:59
#> 06:21:17
#> 12:55:54
#> 10:34:50
#> 08:42:22
#> ]
#> 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"