library(tidyverse)
library(lubridate)
library(stringr)
df <- tibble(YrMo = as.factor(str_sub(ymd(c("2014-01-19", "2014-02-14")),1,7)))
df
#> YrMo
#> <fct>
#> 1 2014-01
#> 2 2014-02
Я пытаюсь создать второй столбец YrMo2
, используя некоторые функции обратного хода.Два ожидаемых выхода - 2014-Jan
и 2014-Feb
, но вместо этого я получаю NA
.
df %>%
mutate(
YrMo2 =
factor(YrMo,
levels = format(as.Date(paste0(levels(YrMo), "-01")), "%Y-%b")
)
)
#> # A tibble: 2 x 2
#> YrMo YrMo2
#> <fct> <fct>
#> 1 2014-01 NA
#> 2 2014-02 NA
Я "знаю", что это должно работать, потому что функция base-R работает:
format(as.Date(paste0(levels(df$YrMo), "-01")), "%Y-%b")
#> [1] "2014-Jan" "2014-Feb"
Кажется очевидным, что мой синтаксис выключен.Но где?Или, может быть, это моя логика.