Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 是否从POSIXct对象中提取AM/PM列?_R_Time_Posixct - Fatal编程技术网

R 是否从POSIXct对象中提取AM/PM列?

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

如果我有一个列为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       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"
datetime
strftime(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")