Как преобразовать строки в даты в R (с примерами)


Часто при импорте данных о дате и времени в R значения импортируются в виде строк.

Самый простой способ преобразовать строки в даты в R — использовать функцию as.Date() , которая использует следующий синтаксис:

as.Date(x, формат)

куда:

  • x: одно строковое значение или вектор строковых значений.
  • формат: Формат, используемый для даты. По умолчанию используется формат ГГГГ-ММ-ДД.

Вы можете использовать команду ?strftime в R, чтобы просмотреть полный список аргументов, доступных для использования для формата даты, но наиболее распространенные из них включают:

  • %d: День месяца в виде десятичного числа (01-31)
  • %m: Месяц в виде десятичного числа (01-12)
  • %y: год без века (например, 04)
  • %Y: Год с веком (например, 2004)

В этом руководстве показано несколько примеров практического использования функции as.Date() .

Пример 1. Преобразование одной строки в дату

В следующем коде показано, как преобразовать одно строковое значение в дату:

#create string value
x <- c(" 2021-07-24 ")

#convert string to date
new <- as.Date(x, format=" %Y-%m-%d ")
new

[1] "2021-07-24"

#check class of new variable
class(new)

[1] "Date"

Пример 2. Преобразование вектора строк в даты

Следующий код показывает, как преобразовать вектор строк в даты:

#create vector of strings
x <- c(" 2021-07-24", " 2021-07-26", " 2021-07-30 ")

#convert string to date
new <- as.Date(x, format=" %Y-%m-%d ")
new

[1] "2021-07-24" "2021-07-26" "2021-07-30"

#check class of new variable
class(new)

[1] "Date"

Пример 3. Преобразование столбца фрейма данных в даты

В следующем коде показано, как преобразовать столбец фрейма данных из строк в даты:

#create data frame
df <- data.frame(day = c(" 2021-07-24", " 2021-07-26", " 2021-07-30 "),
 sales=c(22, 25, 28),
 products=c(3, 6, 7))

#view structure of data frame
str(df)

'data.frame': 3 obs. of 3 variables:
 $ day : Factor w/ 3 levels "2021-07-24","2021-07-26",..: 1 2 3
 $ sales : num 22 25 28
 $ products: num 3 6 7

#convert *day* variable to date
df$day <- as.Date(df$day, format=" %Y-%m-%d ")

#view structure of new data frame
str(df)

'data.frame': 3 obs. of 3 variables:
 $ day : Date, format: "2021-07-24" "2021-07-26" ...
 $ sales : num 22 25 28
 $ products: num 3 6 7

Пример 4. Преобразование нескольких столбцов фрейма даты в даты

В следующем коде показано, как преобразовать несколько столбцов строк данных в даты:

#create data frame
df <- data.frame(start = c(" 2021-07-24", " 2021-07-26", " 2021-07-30 "),
 end = c(" 2021-07-25", " 2021-07-28", " 2021-08-02 "),
 products=c(3, 6, 7))

#view structure of data frame
str(df)

'data.frame': 3 obs. of 3 variables:
 $ start : Factor w/ 3 levels "2021-07-24","2021-07-26",..: 1 2 3
 $ end : Factor w/ 3 levels "2021-07-25","2021-07-28",..: 1 2 3
 $ products: num 3 6 7

#convert *start* and *end* variables to date
df[,c('start', 'end')] = lapply(df[,c('start', 'end')],
 function(x) as.Date(x, format=" %Y-%m-%d "))

#view structure of new data frame
str(df)

'data.frame': 3 obs. of 3 variables:
 $ start : Date, format: "2021-07-24" "2021-07-26" ...
 $ end : Date, format: "2021-07-25" "2021-07-28" ...
 $ products: num 3 6 7

Вы можете узнать больше о функции lapply() , используемой в этом примере , здесь .

Дополнительные ресурсы

Следующие руководства предлагают дополнительную информацию о том, как работать с датами в R:

Полное руководство по форматам даты в R
Как отсортировать фрейм данных по дате в R
Как извлечь год из даты в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.