使用 R 从 ISO-8601 格式日期中提取月份
Extract month from ISO-8601 format date using R
我有一个包含 date
列(其数据类型是因子)的数据框,格式如下:
uid date
<int> <fctr>
2970134 2019-12-31T17:05:00Z
2970204 2019-12-31T23:14:00Z
2970345 2020-01-01T11:00:00Z
我已使用以下代码将它们转换为 2019-12-31T00:00:00+0800
格式:
data$date <- format(as.POSIXct(data$date), format='%Y-%m-%dT%H:%M:%S%z')
我的问题是如何从中提取 月?我尝试使用 format(as.POSIXct(data$date_single, format='%Y-%m-%dT%H:%M:%S%z'),format='%m')
但它 returns NA
s。谢谢。
require(tidyverse)
require(lubridate) # Package for date and time manipulation
data %>%
mutate(month = month(date))
你有一个小的逻辑错误。您获取输入数据并解析它——到目前为止,还不错:
> v <- c("2019-12-31T17:05:00Z", "2019-12-31T23:14:00Z", "2020-01-01T11:00:00Z")
> pt <- as.POSIXct(v)
> pt
[1] "2019-12-31 CST" "2019-12-31 CST" "2020-01-01 CST"
>
现在您已经有了日期(时间)信息,您可以 format()
或 strftime()
随心所欲:
> strftime(pt, "%m")
[1] "12" "12" "01"
> strftime(pt, "%b")
[1] "Dec" "Dec" "Jan"
> strftime(pt, "%B")
[1] "December" "December" "January"
>
从 character
转换为 int
也很容易。请注意,所有这些都是使用基础 R 完成的,没有任何额外的包。
我有一个包含 date
列(其数据类型是因子)的数据框,格式如下:
uid date
<int> <fctr>
2970134 2019-12-31T17:05:00Z
2970204 2019-12-31T23:14:00Z
2970345 2020-01-01T11:00:00Z
我已使用以下代码将它们转换为 2019-12-31T00:00:00+0800
格式:
data$date <- format(as.POSIXct(data$date), format='%Y-%m-%dT%H:%M:%S%z')
我的问题是如何从中提取 月?我尝试使用 format(as.POSIXct(data$date_single, format='%Y-%m-%dT%H:%M:%S%z'),format='%m')
但它 returns NA
s。谢谢。
require(tidyverse)
require(lubridate) # Package for date and time manipulation
data %>%
mutate(month = month(date))
你有一个小的逻辑错误。您获取输入数据并解析它——到目前为止,还不错:
> v <- c("2019-12-31T17:05:00Z", "2019-12-31T23:14:00Z", "2020-01-01T11:00:00Z")
> pt <- as.POSIXct(v)
> pt
[1] "2019-12-31 CST" "2019-12-31 CST" "2020-01-01 CST"
>
现在您已经有了日期(时间)信息,您可以 format()
或 strftime()
随心所欲:
> strftime(pt, "%m")
[1] "12" "12" "01"
> strftime(pt, "%b")
[1] "Dec" "Dec" "Jan"
> strftime(pt, "%B")
[1] "December" "December" "January"
>
从 character
转换为 int
也很容易。请注意,所有这些都是使用基础 R 完成的,没有任何额外的包。