R 是否从POSIXct对象中提取AM/PM列?
如果我有一个列为POSIXct时间戳的数据集,例如,我的数据框如下所示R 是否从POSIXct对象中提取AM/PM列?,r,time,posixct,R,Time,Posixct,如果我有一个列为POSIXct时间戳的数据集,例如,我的数据框如下所示 df$time 16/07/2020 07:35 16/07/2020 08:42 16/07/2020 12:21 16/07/2020 13:07 16/07/2020 14:27 我希望保留此时间戳,但创建一个AM/PM列,这是一个单独的列,而不是strtime或lubridate包中的%p 我希望结果如下所示: df 1 2 16/07/2020 07:35
df$time
16/07/2020 07:35
16/07/2020 08:42
16/07/2020 12:21
16/07/2020 13:07
16/07/2020 14:27
我希望保留此时间戳,但创建一个AM/PM列,这是一个单独的列,而不是strtime或lubridate包中的%p
我希望结果如下所示:
df
1 2
16/07/2020 07:35 AM
16/07/2020 08:42 AM
16/07/2020 12:21 PM
16/07/2020 13:07 PM
16/07/2020 14:27 PM
对于posixct时间戳,有没有办法做到这一点
谢谢首先请注意,与问题中所述相反,此处显示的数据不是POSIXct格式,否则不会显示为那样。问题应该以可复制的形式提供数据,由于没有这样做,我们在最后的注释中提供了它 1)格式化。POSIXct使用结尾注释中的输入,转换为POSIXct,然后使用
%p
格式化:
datetime <- as.POSIXct(L, format = "%d/%m/%Y %H:%M")
format(datetime, "%p")
## [1] "AM" "AM" "PM" "PM" "PM"
datetimestrftime(df$time,format=“%p”)
?
ifelse(sub(".* ", "", L) < "12:00", "AM", "PM")
## [1] "AM" "AM" "PM" "PM" "PM"
ifelse(substring(L, 12) < "12:00", "AM", "PM")
## [1] "AM" "AM" "PM" "PM" "PM"
ifelse(read.table(text = L)$V2 < "12:00", "AM", "PM")
## [1] "AM" "AM" "PM" "PM" "PM"
# test input
L <- c("16/07/2020 07:35", "16/07/2020 08:42", "16/07/2020 12:21",
"16/07/2020 13:07", "16/07/2020 14:27")