【发布时间】:2021-02-16 23:34:27
【问题描述】:
正如标题所示,我正在尝试使用 lubridate 或 ANYTIME(或类似方法)将时间从 24 小时转换为 12 小时。为了让生活更轻松,我不需要转换整个时间。
我的意思是我有一列这样格式的日期:
2021-02-15 16:30:33
我可以使用inbound$Hour <- hour(inbound$Timestamp) 从时间戳中获取小时,这很棒.. 只是它仍然是 24 小时制。 (这会为小时数创建一个整数列)
我已经尝试了几个变异,例如inbound <- inbound %>% mutate(Hour = ifelse(Hour > 12, sum(Hour - 12),Hour)
这在技术上是可行的.. 但我得到了一些非常不稳定的值(例如,我在几行中得到了 -294)..
有没有更简单的方法来转换 12 小时的时间?
根据以下建议,我尝试使用如下基本格式:
inbound$Time <- format(inbound$Timestamp, "%H:%M:%S")
inbound$Time <- format(inbound$Time, "%I:%M:%S")
第二种格式出现错误
Error in format.default(inbound$Time, "%I:%M:%S") :
invalid 'trim' argument
我确实注意到第一种格式转换为类 CHARACTER 列..不确定这是否会导致第二种格式出现问题..
然后我也尝试了:
`inbound$time <- format(strptime(inbound$Timestamp, "%H:%M:%S"), "%I:%M %p")`
哪个运行没有错误..但它会创建一个完整的 NA 列
最终编辑::::: 我犯了误读/应用解决方案的错误,这导致了错误.. 使用 cmets 的inbound$Time <- format(inbound$Time, "%I:%M:%S") 或as.numeric(format(inbound$Timestamp, "%I")) 时...都有效并解决了问题我有。
【问题讨论】:
标签: r lubridate microsoft-r