0

我有以下数据框,数据集已经从数据库表中导入,并且 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

如何从 created_at 列中仅提取小时和分钟,最好使用基本 r 库?我需要稍后将小时和分钟粘贴在一起并将其作为新列。

4

2 回答 2

6

我们可以使用方便的函数lubridatecharacter列转换为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"
于 2016-07-04T12:09:03.087 回答
1

仅使用基本 R 库:

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

05:31

看来这是UTC格式。有关解析该格式的更多详细信息,请参阅

让我也用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"))

53

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

31.042

于 2016-07-04T12:09:49.457 回答