【问题标题】:Convert 12hour time to 24Hour time将 12 小时时间转换为 24 小时时间
【发布时间】:2012-04-09 12:22:49
【问题描述】:

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

我正在更改代码以考虑具有不同 URL 类型的机场数据。机场天气数据的另一个问题是时间数据以 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”不够小心,因为如果他们通过这个算法,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])

    }
}

有什么帮助吗?

【问题讨论】:

    标签: r time


    【解决方案1】:

    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)
    

    【讨论】:

    • 日期问题其实比较大。我希望日期/时间信息是一个可以放入动物园对象的对象,但大于该函数的主要目标是返回特定日期的数据。如果我丢失了该日期信息,而该信息不在列中,我将在未来引起头痛。日期信息由用户在初始函数中输入日期范围时提供。对于该范围内的每一天,都会读取一个网站,然后清理数据。部分清洁工作从 12 小时转换为 24 小时。再次感谢
    • # convert Time column into properly encoded date time &lt;br/&gt; data$TimeEST &lt;- strptime(data$TimeEST, format='%I:%M %p')
      data$TimeEST &lt;- substr(data$TimeEST, 11, 19) data$TimeEST &lt;- str_c(date,data$TimeEST) data$TimeEST &lt;- as.POSIXlt(data$TimeEST, format='%Y-%m-%d %H:%M:%S') @AndresT 感谢您的建议,这是我用来获得所需对象类型的方法。
    【解决方案2】:

    看看?strptime

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

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 2012-12-01
      • 1970-01-01
      • 2017-06-27
      • 2021-12-24
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多