r - 存储没有日期但不作为类字符的时间

标签 r datetime dataframe posixct

我的类字符数据框中有一个 local.time 列,其中包含如下元素:

> a$local.time
 [1] "1:30 AM"  "6:29 AM"  "6:59 AM"  "9:54 AM"  "10:14 AM" "10:34 AM" "12:54 PM" "1:15 PM"  "1:20 PM" 
 [10] "1:20 PM"  "2:15 PM"  "2:15 PM"  "4:23 AM"  "6:28 AM"  "2:45 PM"  "3:08 PM"  "3:23 PM"  "3:58 PM" 

我想将它们从类字符转换为时间变量。所以我用了:

> as.POSIXct(a$local.time, tz = "", format = "%I:%M %p", usetz = FALSE)

这导致:

[1] "2014-10-31 01:30:00 EDT" "2014-10-31 06:29:00 EDT" "2014-10-31 06:59:00 EDT" "2014-10-31       09:54:00 EDT"
[5] "2014-10-31 10:14:00 EDT" "2014-10-31 10:34:00 EDT" "2014-10-31 12:54:00 EDT" "2014-10-31 13:15:00 EDT"

我在不同的列中有一个日期变量,目的是提供按日期过滤和在动态仪表板中将时间带缩放到分钟的功能。

我想从 a$local.time 中删除日期和时区,但保留时间格式以便保持时间顺序,即 18:57 是一天中的第 19 小时和第 57 分钟等。

如果我用

a$local.time <- format(a$local.time, "%Y-%m-%d %H:%M:%S", usetz = FALSE) a$local.time <- strftime(a$local.time, format = "%H:%m") ,

类(class)改变性格!什么是正确的方法?

最佳答案

chron 包有一个“times”类,可能对您有帮助。从与您目前所拥有的类似的东西开始:

x <- c("1:30 AM", "6:29 AM", "6:59 AM", "9:54 AM", "10:14 AM", "3:15 PM"))
a <- as.POSIXct(x, tz = "", format = "%I:%M %p", usetz = FALSE)

然后我们可以使用times函数和format

library(chron)
(tms <- times(format(a, "%H:%M:%S")))
# [1] 01:30:00 06:29:00 06:59:00 09:54:00 10:14:00 15:15:00
attributes(tms)
# $format
# [1] "h:m:s"
#
# $class
# [1] "times"

关于r - 存储没有日期但不作为类字符的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26680499/

相关文章:

pandas - 如何按天聚合 pandas Dataframe

python - 在 python 中读取 15 M 行 csv 文件的有效方法

sql - 在SQL Server中无时间比较日期的最佳方法

python - 从 DF 列将值插入字典 - Pandas (Python)

r - 使用 coord_equal() 时使用 cowplot::plot_grid() 垂直对齐不同高度的图

r - 查看内部方法

datetime - 使用本地时区格式化日期/时间

javascript - 在 datetime-local 输入中单击当前日期和时间

r - 在R中将因子转换为二进制

r - 使用 dplyr 根据日期变量过滤行