2017-02-11 11 views
0

У меня есть данные, что выглядит следующим образом:Удаление части даты из временной метки в R

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 

ответ

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

Просто используйте 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> 

В общем, я stronly совет против лечения даты и времени с помощью регулярного выражения. Вы по существу всегда лучше с сильной типизацией явных типов. Есть причина, по которой они существуют.