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] "04:57:17 val: 17837" "11:18:27 val: 40707" "03:41:28 val: 13288"
#> [4] "17:26:56 val: 62816" "08:50:51 val: 31851"
#> PTime [ double ]: number of epochs [ ms ] since midnight
#> [1] "21:36:21:414ms val: 77781414" "09:51:01:872ms val: 35461872"
#> [3] "08:46:20:911ms val: 31580911" "09:16:23:859ms val: 33383859"
#> [5] "23:40:59:228ms val: 85259228"
#> PTime [ double ]: number of epochs [ us ] since midnight
#> [1] "20:54:47:271_460us val: 75287271460" "22:37:27:465_245us val: 81447465245"
#> [3] "06:34:32:014_289us val: 23672014289" "11:46:52:378_381us val: 42412378381"
#> [5] "16:43:49:799_985us val: 60229799985"
#> PTime [ double ]: number of epochs [ ns ] since midnight
#> [1] "17:43:03:423_156_291ns val: 63783423156291"
#> [2] "00:33:38:544_211_238ns val: 2018544211238"
#> [3] "02:55:55:845_158_547ns val: 10555845158547"
#> [4] "01:18:23:829_444_944ns val: 4703829444944"
#> [5] "09:03:18:770_999_908ns val: 32598770999908"
#> PTime [ double ]: number of epochs [ s ] since midnight
#> [1] "23:59:59 val: 86399"
#> polars Series: shape: (5,)
#> Series: '' [time]
#> [
#> 05:53:59
#> 07:00:58
#> 15:03:59
#> 18:04:57
#> 15:18:19
#> ]
#> 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"