2016-07-04 9 views
-1

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

sale_id  created_at 
1    2016-05-28T05:53:31.042Z 
2    2016-05-30T12:50:58.184Z 
3    2016-05-23T10:22:18.858Z 
4    2016-05-27T09:20:15.158Z 
5    2016-05-21T08:30:17.337Z 
6    2016-05-28T07:41:14.361Z 

Как я могу извлечь только час и минута из созданного_стата, предпочтительно используя базовые библиотеки r? Мне нужно вставить час и минуту вместе позже и поместить его в новую колонку.

+1

'зиЬзЬг (ДФ $ created_at, 12, 16)' или если вам не нужен ':' 'затем GSUB (SubStr (DF $ created_at , 12, 16)) ' – hrbrmstr

ответ

1

Мы можем использовать удобные функции в lubridate преобразовать character столбец DateTime и извлечь час и минуту с format

library(lubridate) 
v1 <- ymd_hms("2016-05-28T05:53:31.042Z") 
format(v1, "%H:%M") 
#[1] "05:53" 

Или только с помощью base R

format(as.POSIXct("2016-05-28T05:53:31.042z", format = "%Y-%m-%dT%H:%M:%S"), "%H:%M") 
#[1] "05:53" 

Другие оптические устройства нс включают с gsub

gsub(".*T|:\\d+\\..*", "", "2016-05-28T05:53:31.042z") 
#[1] "05:53" 
+0

Возможно ли это сделать, не используя lubridate? – sanaz

+0

@sanaz Да, возможно – akrun

+0

Как это возможно? – sanaz

1

Использование библиотеки только базовые R:

format(as.POSIXct("2016-05-28T05:53:31.042z", format = "%Y-%m-%dT%H:%M:%S"), "%H:%M") 

05:31

Похоже, что это формат UTC. Подробнее о разборе этого формата см. this.

Позвольте мне показать, что с помощью Sys.Date() для примера, а также:

format(as.POSIXlt(Sys.time(), "America/New_York"), "%H:%M") 

08:15

Использование бесконечно лучше lubridate библиотека:

require(lubridate) 
minute(ymd_hms("2016-05-28T05:53:31.042Z")) 
second(ymd_hms("2016-05-28T05:53:31.042Z")) 

31.042

+0

Вот почему я спросил, желательно базовые пакеты R – sanaz

+0

@sanaz ОК, никаких проблем, я обновил вопрос и добавлю немного больше к этому также –

+1

@sanaz Правильно вот почему я говорил, что не знаю, в какой временной зоне это происходит, но я бы обновил его (и я добавил еще один пример с Sys.Date).Я понял, что это GMT, и обновил его снова. –

 Смежные вопросы

  • Нет связанных вопросов^_^