从R中的时间戳中删除日期部分

时间:2017-02-11 18:00:26

标签: r date parsing lubridate

我的数据如下:

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

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:1)

只需使用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>

一般而言,我强烈建议不要通过正则表达式来处理日期和时间。通过显式类型的强类型,您基本上总是更好。他们存在的原因。