【问题标题】:Removing date part from timestamp in R从R中的时间戳中删除日期部分
【发布时间】:2017-02-11 18:00:25
【问题描述】:

我的数据如下所示:

timestamp                      volume
1  2013-10-29T00:00:00-05:00    650
2  2013-10-29T00:15:00-05:00    778
3  2013-10-29T00:30:00-05:00    683
4  2013-10-29T00:45:00-05:00    723

我该如何删除日期,(这部分2013-10-29T)使我的专栏看起来像这样:

我很难使用 lubridate 。谢谢!

      timestamp     volume
1  00:00:00-05:00    650
2  00:15:00-05:00    778
3  00:30:00-05:00    683
4  00:45:00-05:00    723

【问题讨论】:

    标签: r date parsing lubridate


    【解决方案1】:

    我们可以使用sub 来删除包含T 的日期部分,方法是匹配直到T 的字符,即.*T,并将其替换为空白(""

    df1$timestamp <- sub(".*T", "", df1$timestamp)
    df1$timestamp
    #[1] "00:00:00-05:00" "00:15:00-05:00" "00:30:00-05:00" "00:45:00-05:00"
    

    【讨论】:

      【解决方案2】:

      只需使用anytime()

      R> library(anytime)
      R> pt <- anytime(c("2013-10-29T00:00:00-05:00", "2013-10-29T00:15:00-05:00", 
      +                  "2013-10-29T00:30:00-05:00", "2013-10-29T00:45:00-05:00"))
      R> pt
      [1] "2013-10-29 00:00:00 CDT" "2013-10-29 00:15:00 CDT" 
      [3] "2013-10-29 00:30:00 CDT" "2013-10-29 00:45:00 CDT"
      R> format(pt, "%H:%M:%S")
      [1] "00:00:00" "00:15:00" "00:30:00" "00:45:00"
      R> 
      

      如果你想添加偏移量,你可以在格式字符串中这样做:

      R> format(pt, "%H:%M:%S-05:00")
      [1] "00:00:00-05:00" "00:15:00-05:00" "00:30:00-05:00" "00:45:00-05:00"
      R>
      

      总的来说,我强烈建议不要通过正则表达式处理日期和时间。对于显式类型的强类型,您基本上总是会更好。它们存在是有原因的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-07
        • 1970-01-01
        • 2020-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-04
        相关资源
        最近更新 更多