如果data.frame
包含20100101
,2010-01-01
,2010/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)))
```
答案 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')