从r中的字符列中提取小时和分钟
extracting hour and minute from character column in r
我有以下数据框,数据集已经从数据库导入 table 并且 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 列中仅提取小时和分钟,最好使用 base r 库?稍后我需要将小时和分钟粘贴在一起并作为一个新列。
我们可以使用 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"
仅使用基础 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
我有以下数据框,数据集已经从数据库导入 table 并且 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 列中仅提取小时和分钟,最好使用 base r 库?稍后我需要将小时和分钟粘贴在一起并作为一个新列。
我们可以使用 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"
仅使用基础 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