使用 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 NAs。谢谢。

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 完成的,没有任何额外的包。