Ответ выше показал базовый подход к вашему вопросу.Я использовал пакеты tidyverse
, чтобы сделать то же самое, просто как другой способ.
Прежде всего, мы посмотрим на ваши данные
df<- structure(list(Date = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = c("2008-07-31",
"2009-07-31", "2010-07-31", "2011-07-31", "2012-07-31", "2013-07-31",
"2014-07-31", "2011-10-31", "2012-10-31", "2013-10-31", "2014-10-31",
"2016-10-31", "2017-10-31"), class = "factor")), row.names = c(NA,
6L), class = "data.frame")
print(df)
Date
1 2008-07-31
2 2008-07-31
3 2008-07-31
4 2008-07-31
5 2008-07-31
6 2008-07-31
Если мы посмотрим на структуру фрейма данных, то увидим, что даты хранятся в виде коэффициентов
str(df)
'data.frame': 6 obs. of 1 variable:
$ Date: Factor w/ 13 levels "2008-07-31","2009-07-31",..: 1 1 1 1 1 1
Нам нужно загрузить некоторые библиотеки.Единственное, что требует объяснения, - это пакет magrittr
, который предоставляет удобный оператор %<>%
, который присваивает результаты операций на правой стороне конвейера исходной переменной
library(tidyverse)
library(lubridate)
library(magrittr)
. Таким образом, вниже по конвейеру мы -
- передаем фрейм данных
df
дат в виде коэффициентов через as_tibble()
, который преобразует его в формат tidyverse tibble - , затем используем функцию
mutate
чтобы перезаписать столбец Date
, - заменив его значение результатами функции
lubridate
ymd
, которая является вспомогательной функцией, которая анализирует даты в факторных или строковых форматах в структуре year-month-date
.Эквивалентом может быть dmy
, если данные в формате day-month-year
.
df %<>%
as_tibble() %>%
mutate(
Date = ymd(Date)
)
Теперь, когда все готово, мы можем посмотреть на данные
print(df)
# A tibble: 6 x 1
Date
<date>
1 2008-07-31
2 2008-07-31
3 2008-07-31
4 2008-07-31
5 2008-07-31
6 2008-07-31
Теперь вы можете видеть, что даты теперь сохраняются как тип данных date
.
Заключительный комментарий -
Если вы хотите создать таблицы данных вручную или tibbles
, взгляните на функцию tribble
следующим образом, где мы вручную создаем тот же тиббл, что иВы сделали, затем приведите тип данных к factor
df <- tribble(
~Date,
"2008-07-31",
"2009-07-31",
"2010-07-31",
"2011-07-31",
"2012-07-31",
"2013-07-31",
"2014-07-31",
"2011-10-31",
"2012-10-31",
"2013-10-31",
"2014-10-31",
"2016-10-31",
"2017-10-31")
df %<>%
mutate(
Date = as_factor(Date)
)
glimpse(df)
Observations: 13
Variables: 1
$ Date <fct> 2008-07-31, 2009-07-31, 2010-07-31, 2011-07-31, 2012-07-31, 2013-07-31, 2014-07-31, 2011-10-31, 2012-10-31, 2013-10-31, 2014-10-31...