Часто при импорте данных о дате и времени в 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