将12小时时间转换为24小时时间

时间:2012-03-25 22:28:33

标签: r time

我有每小时的天气数据。我从这里看到了函数示例:http://casoilresource.lawr.ucdavis.edu/drupal/node/991

我正在更改代码来计算机场数据,该数据具有不同的网址类型。机场天气数据的另一个问题是时间数据以12小时格式保存。以下是数据样本:

14  10:43 AM
15  10:54 AM
16  11:54 AM
17  12:07 PM
18  12:15 PM
19  12:54 PM
20  1:54 PM
21  2:54 PM

这是我尝试的内容:(我发现只使用'PM'并不够小心,因为如果他们通过这个alg,12到下午1点之间的任何时间都会关闭)

date<-Sys.Date()


data$TimeEST<-strsplit(data$TimeEST, ' ')
for (x in 1:35){
    if('AM' %in% data$TimeEST[[x]]){
        gsub('AM','',data$TimeEST[[x]])
        data$TimeEST[[x]]<-str_trim(data$TimeEST[[x]])
        data$TimeEST[[x]]<-str_c(date,' ',data$TimeEST[x],':',data$TimeEST[2])
    }
    else if('PM' %in% data$TimeEST[[x]]){
        data$TimeEST[[x]]<-gsub('PM', '',data$TimeEST[[x]])
        data$TimeEST[[x]]<-strsplit(data$TimeEST[[x]], ':')
        data$TimeEST[[x]][[1]][1]<-as.integer(data$TimeEST[[x]][[1]][1])+12
        data$TimeEST[[x]]<-str_trim(data$TimeEST[[x]][[1]])
        data$TimeEST[[x]]<-str_c(date, " ", data$TimeEST[[x]][1],':',data$TimeEST[[x]][2])

    }
}

任何帮助?

2 个答案:

答案 0 :(得分:15)

strptime会有效吗?

df2= structure(c("10:43 AM", "10:54 AM", "11:54 AM", "12:07 PM", "12:15 PM", 
            "12:54 PM", "1:54 PM", "2:54 PM"), .Dim = c(8L, 1L))



 strptime(df2, "%I:%M %p" )

或者如果您不想要日期,请执行以下操作: 虽然这取决于你想要什么类的课程。

substr(strptime(df2, "%I:%M %p" ),11,19)

答案 1 :(得分:4)

看看?strptime

as.POSIXct(data$TimeEST, format='%I:%M %p')