в моем наборе данных
mydat=structure(list(date = c("22.06.2021", "22.06.2021", "22.06.2021",
"22.06.2021", "22.06.2021", "22.06.2021", "22.06.2021", "22.06.2021",
"22.06.2021", "22.06.2021", "22.06.2021", "22.06.2021", "22.06.2021",
"22.06.2021", "22.06.2021", "22.06.2021", "22.06.2021", "22.06.2021",
"23.06.2021", "23.06.2021", "23.06.2021", "23.06.2021", "23.06.2021",
"23.06.2021", "23.06.2021", "23.06.2021", "23.06.2021", "23.06.2021",
"23.06.2021", "23.06.2021", "23.06.2021", "23.06.2021", "23.06.2021",
"23.06.2021", "23.06.2021", "23.06.2021", "23.06.2021", "23.06.2021",
"23.06.2021", "23.06.2021", "23.06.2021", "23.06.2021", "24.06.2021",
"24.06.2021"), hour = c(6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L,
15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 0L, 1L, 2L, 3L,
4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L,
18L, 19L, 20L, 21L, 22L, 23L, 0L, 1L), weekday = c(2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L), base_price = c(3250.87,
3261.89, 3272.91, 3283.93, 3294.95, 3305.97, 3316.98, 3328, 3339.02,
3350.04, 3361.06, 3372.08, 3383.1, 3394.12, 3405.14, 3416.16,
3427.17, 3438.19, 3449.21, 3460.23, 3471.25, 3482.27, 3493.29,
3504.31, 3515.33, 3526.35, 3537.36, 3548.38, 3559.4, 3570.42,
3581.44, 3592.46, 3603.48, 3614.5, 3625.52, 3636.54, 3647.55,
3658.57, 3669.59, 3680.61, 3691.63, 3702.65, 3713.67, 3724.69
)), class = "data.frame", row.names = c(NA, -44L))
я пытаюсь преобразовать формат даты
extended_data_mod <- mydat %>%
dplyr::mutate(.,
index_date = as.Date(paste0(lubridate::year(date), "-", lubridate::month(date), "-01")),
months = lubridate::month(index_date),
years = lubridate::year(index_date))
и всегда получаю ошибку
Problem with `mutate()` input `index_date`.
x character string is not in a standard unambiguous format
i Input `index_date` is `as.Date(...)
если я использую as.numeric(mydat$date), я получаю только NA. Как я могу получить этот формат? (пример) гггг-мм-дд (2022-03-19) (лучше, чтобы мой набор данных был табличкой) Спасибо за помощь.
Чтобы использовать такие функции, как lubridate::month
и lubridate::year
, вам нужны данные в классе даты. Входные данные имеют класс символов. lubridate::dmy
поможет вам перейти на класс Date, а затем вы сможете извлечь из него month
и year
.
library(dplyr)
library(lubridate)
mydat %>%
mutate(index_date = dmy(date),
months = month(index_date),
years = year(index_date))
# date hour weekday base_price index_date months years
#1 22.06.2021 6 2 3250.87 2021-06-22 6 2021
#2 22.06.2021 7 2 3261.89 2021-06-22 6 2021
#3 22.06.2021 8 2 3272.91 2021-06-22 6 2021
#4 22.06.2021 9 2 3283.93 2021-06-22 6 2021
#5 22.06.2021 10 2 3294.95 2021-06-22 6 2021
#6 22.06.2021 11 2 3305.97 2021-06-22 6 2021
#...
#...