有没有办法通过tidyverse或其他方法从R中的日期数据中提取年份和月份?

有没有办法通过tidyverse或其他方法从R中的日期数据中提取年份和月份?,r,zoo,tidyverse,R,Zoo,Tidyverse,如果data.frame包含20100101,2010-01-01,2010/01/01,三种类型的样式时间数据,我如何获得“%Y-%m”或2010年1月这样的列 谢谢@akrun,它对我有用 # `XXXX-XX` ```{r} library(tidyverse) df <- data_frame( x = "20100101" ) df %>% mutate(yearMon = format(lubridate::ymd(x), "%Y-%m")) ``` # `

如果
data.frame
包含
20100101
2010-01-01
2010/01/01
,三种类型的样式时间数据,我如何获得“%Y-%m”或
2010年1月
这样的列


谢谢@akrun,它对我有用

# `XXXX-XX`
```{r}
library(tidyverse)
df <- data_frame(
  x = "20100101"
) 
df %>%
  mutate(yearMon = format(lubridate::ymd(x), "%Y-%m"))
```

# `Jan XXXX`
```{r}
df %>%
mutate(yearMon = zoo::as.yearmon(lubridate::ymd(x)))
```
#`XXXX-XX`
```{r}
图书馆(tidyverse)
df%
mutate(yearMon=格式(lubridate::ymd(x),%Y-%m”))
```
#”“一月XXXX日`
```{r}
df%>%
突变(yearMon=zoo::as.yearMon(lubridate::ymd(x)))
```

因为它们都跟在年、月、日之后,所以我们可以使用
ymd

library(tidyverse)
df1 %>%
     mutate(yearMon = format(ymd(Date), "%Y-%m"))
     #if we need format "Jan 2010"
     #mutate(yearMon = format(ymd(Date), "%b-%Y"))
另一个选项是
yearmon
from
zoo

library(zoo)
df1 %>%
    mutate(yearMon = as.yearmon(ymd(Date)))

因为它们都跟在年、月、日之后,所以我们可以使用
ymd

library(tidyverse)
df1 %>%
     mutate(yearMon = format(ymd(Date), "%Y-%m"))
     #if we need format "Jan 2010"
     #mutate(yearMon = format(ymd(Date), "%b-%Y"))
另一个选项是
yearmon
from
zoo

library(zoo)
df1 %>%
    mutate(yearMon = as.yearmon(ymd(Date)))

我们可以随时使用
库,因为没有统一的日期格式

library(anytime)
format(anytime(x), format = "%b %Y")

#[1] "Jan 10" "Jan 10" "Jan 10"

数据

x <- c('20100101', '2010-01-01', '2010/01/01')

x我们可以随时使用
库,因为没有一种一致的日期格式

library(anytime)
format(anytime(x), format = "%b %Y")

#[1] "Jan 10" "Jan 10" "Jan 10"

数据

x <- c('20100101', '2010-01-01', '2010/01/01')

x如果您只是有不同类型的分隔符,则将它们去掉并格式化-
格式(如.Date(gsub(“[^0-9]”),x,format=“%Y%m%d”),“%b%Y”)
如果您只是有不同类型的分隔符,则将它们去掉并格式化-
格式(如.Date(gsub(“[^0-9]”,x),format=“%Y%m%d”),“%b%Y”)
yearmon解决方案可以是:
as.yearmon(gsub(“\\D”,Date),%Y%m%D”)
在这种情况下不需要润滑脂。yearmon解决方案可以是:
as.yearmon(gsub(\\D,”,Date),%Y%m%D”)
在这种情况下不需要润滑脂。