我有一个数据集,其中包含字符格式的时间。我试图将其从12小时格式转换为24.我已经做了一些搜索,但我发现的所有内容似乎都假设这些字符已经是24小时格式。这是我正在与之合作的一个例子。
times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM")
答案 0 :(得分:19)
这应该有效:
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"
答案 1 :(得分:4)
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 - 你输入的速度比我快。 To Topic Starter - 请查看CDT和EDT是如何根据您的时区自动填充的 - 这可能是在一天内更改后1小时内转换时间的问题