繁体   English   中英

在 R 中将时间转换为一天中的 24 小时格式

[英]Converting time to 24 hour of day format in R

我有一个数据框,其中包含年、年、月、12 小时时间和一些能源数据。 我想将 12 小时格式的时间数据转换为一天中的几个小时(1-24)。 时间是人物课。

format(as.POSIXct(t, format = '%I %p'), format = "%H")

在哪里

t <- df$time

df$time== 字符类中的时间,格式如下:

"12 a.m." "3 p.m."

但是在代码之后我得到了所有的 NA 并且列没有变化。

我认为你应该举一个例子,所以结果正是你正在寻找的......尝试一下......

Time2 <− c("11:00 AM", "10:42 AM", "12:34 AM")
format(as.POSIXct(Time2, format = '%I:%M %p'), format = "%H:%M:%S")

这是一个lubridate解决方案。 假设所有时间的格式都像您的示例:仅小时,后跟“am”或“pm”。 日期时间转换函数仅识别“am”或“pm”,因此您需要删除句点。

library(lubridate) # install first if required

times <- c("12 a.m.", "3 p.m.")

# code with nested functions
new_times <- hour(parse_date_time(gsub("\\.", "", times), "%I %p"))

# code with pipes (easier to read, perhaps)
library(magrittr)
new_times <- times %>% 
  gsub("\\.", "", .) %>% 
  parse_date_time(., "%I %p") %>% 
  hour()

结果:

new_times
[1]  0 15

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM