R时间间隔数据类型
R time interval data type
R中有时间间隔数据(变量)类型吗?我有一个包含日期时间和时间间隔列的 CSV 文件。 datetime 列的数据类型可以是POSIXlt
,但我不知道如何为另一列设置timeinterval 数据类型。有可能吗,或者在 R 中处理时间间隔的最佳方法是什么?
我的 CSV 文件中的时间间隔值如下所示 [<number of days> %H:%M:%S
]:
'0 20:32:59'
在Pythonpandas中,有一个timedelta64[ns]
时间间隔数据类型。
谢谢!
是的,见? difftime
如果您的 csv 已拆分为多列,请将 as.difftime
应用于一列,将 as.POSIXlt
应用于另一列。
例如:
as.difftime(0, units="days") + as.POSIXlt("20:32:59", format="%H:%M:%S")
[编辑]
如果整个结果是一个区间,可以这样做:
as.difftime(0, units="days") + as.difftime("20:32:59", format="%H:%M:%S")
将字符串拆分为天数和时间,使用 stringi
,然后使用 lubridate
来操作组件。
library(stringi)
library(lubridate)
在下面的例子中:
([0-9]+)
表示捕获一位或多位数字。
+
表示一个或多个空格(未捕获)。
([0-9]{2}:[0-9]{2}:[0-9]{2})
表示捕获 2 个数字、一个冒号、2 个数字、另一个冒号和另外 2 个数字。
x <- "0 20:32:59"
matches <- stri_match_first_regex(x, "([0-9]+) +([0-9]{2}:[0-9]{2}:[0-9]{2})")
天数在第二列,hours/minutes/seconds在第三列。
days
创建一个天数的周期; hms
创建一个小时、分钟和秒的时间段。
n_days <- days(as.integer(matches[, 2]))
time <- hms(matches[, 3])
现在你的总数只是 n_days + time
,虽然你可能希望它相对于某个来源,例如:
Sys.time() + n_days + time
R中有时间间隔数据(变量)类型吗?我有一个包含日期时间和时间间隔列的 CSV 文件。 datetime 列的数据类型可以是POSIXlt
,但我不知道如何为另一列设置timeinterval 数据类型。有可能吗,或者在 R 中处理时间间隔的最佳方法是什么?
我的 CSV 文件中的时间间隔值如下所示 [<number of days> %H:%M:%S
]:
'0 20:32:59'
在Pythonpandas中,有一个timedelta64[ns]
时间间隔数据类型。
谢谢!
是的,见? difftime
如果您的 csv 已拆分为多列,请将 as.difftime
应用于一列,将 as.POSIXlt
应用于另一列。
例如:
as.difftime(0, units="days") + as.POSIXlt("20:32:59", format="%H:%M:%S")
[编辑] 如果整个结果是一个区间,可以这样做:
as.difftime(0, units="days") + as.difftime("20:32:59", format="%H:%M:%S")
将字符串拆分为天数和时间,使用 stringi
,然后使用 lubridate
来操作组件。
library(stringi)
library(lubridate)
在下面的例子中:
([0-9]+)
表示捕获一位或多位数字。+
表示一个或多个空格(未捕获)。([0-9]{2}:[0-9]{2}:[0-9]{2})
表示捕获 2 个数字、一个冒号、2 个数字、另一个冒号和另外 2 个数字。
x <- "0 20:32:59"
matches <- stri_match_first_regex(x, "([0-9]+) +([0-9]{2}:[0-9]{2}:[0-9]{2})")
天数在第二列,hours/minutes/seconds在第三列。
days
创建一个天数的周期; hms
创建一个小时、分钟和秒的时间段。
n_days <- days(as.integer(matches[, 2]))
time <- hms(matches[, 3])
现在你的总数只是 n_days + time
,虽然你可能希望它相对于某个来源,例如:
Sys.time() + n_days + time