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

时间:2017-09-18 03:21:34

标签: r zoo tidyverse

如果data.frame包含201001012010-01-012010/01/01三种类型的时间数据,我怎样才能获得类似"%Y-%的列米"或Jan 2010

感谢@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)))
```

2 个答案:

答案 0 :(得分:4)

由于它们都遵循年,月,日,我们可以使用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

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

答案 1 :(得分:1)

我们可以使用anytime库,因为没有一致的日期格式。

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

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

OR

format(anytime(x), format = "%Y-%m")

#[1] "2010-01" "2010-01" "2010-01"

数据

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