我有一个时间数据集,它是以字符格式表示的。我试图将其从12小时格式转换为24小时格式。我已经进行了一些搜索,但我发现所有的方法都假定这些字符已经是24小时格式的。以下是我正在处理的时间示例。
times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")
我有一个时间数据集,它是以字符格式表示的。我试图将其从12小时格式转换为24小时格式。我已经进行了一些搜索,但我发现所有的方法都假定这些字符已经是24小时格式的。以下是我正在处理的时间示例。
times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")
这应该可以正常工作:
times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")
strptime(times, "%I:%M %p")
## [1] "2015-04-23 09:06:00 EDT" "2015-04-23 16:42:00 EDT"
## [3] "2015-04-23 15:05:00 EDT" "2015-04-23 12:00:00 EDT"
## [5] "2015-04-23 03:38:00 EDT"
如果您只需要时间:
format(strptime(times, "%I:%M %p"), format="%H:%M:%S")
## [1] "09:06:00" "16:42:00" "15:05:00" "12:00:00" "03:38:00"
times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")
print(as.POSIXct(times, format='%I:%M %p'))
[1] "2015-04-23 09:06:00 CDT" "2015-04-23 16:42:00 CDT" "2015-04-23 15:05:00 CDT" "2015-04-23 12:00:00 CDT"
[5] "2015-04-23 03:38:00 CDT"
@Tyler - 你打字比我快。给话题发起者 - 请注意CDT和EDT是如何根据您的时区自动填充的 - 在转换与一天更改1小时内的时间时,这可能潜在成为一个问题。