2015-04-23 120 views
8

我有一個數據集與字符格式的時間。我試圖從12小時格式轉換爲24格式。我已經完成了一些搜索,但是我發現的所有內容似乎都假設這些字符已經是24小時格式。這是我正在與之合作的一個例子。轉換12小時字符時間到24小時

times <- c("9:06 AM", "4:42 PM", "3:05 PM", "12:00 PM", "3:38 AM") 

回答

12

這應該工作:

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

這太棒了,謝謝!我在搜索時找到了strptime,但無法弄清楚如何排除日期,因爲我已經在另一個變量中進行了排除。 _hat tip_ –

3
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

我使用2個手指(我來乾淨),但我克服了,因爲我有我的.Rprofile函數來註釋(哈希)和縮進4空格,添加代碼時節省時間。所以我作弊更好,不打字速度更快:-) –

+0

你對CDT/EDT/PDT等等有什麼看法? –

+0

感謝RE時區的警告! –

相關問題