Как исправить в R: ошибка в as.Date.numeric(x): необходимо указать «происхождение»


Одна ошибка, с которой вы можете столкнуться в R:

Error in as.Date.numeric(x) : 'origin' must be supplied

Эта ошибка обычно возникает, когда вы пытаетесь преобразовать число в дату в R, но не можете указать исходную дату.

В этом руководстве рассказывается, как именно исправить эту ошибку.

Как воспроизвести ошибку

Предположим, у нас есть следующий фрейм данных в R, который показывает общий объем продаж, сделанных какой-либо компанией в разные дни:

#create data frame
df <- data.frame(date=c(27, 140, 180, 200),
 sales=c(12, 22, 30, 31))

#view data frame
df

 date sales
1 27 12
2 140 22
3 180 30
4 200 31

Мы можем использовать функцию str() для просмотра структуры фрейма данных:

#view structure of data frame
**str(df)

'data.frame': 4 obs. of 2 variables:
 $ date : num 27 140 180 200
 $ sales: num 12 22 30 31

Мы видим, что столбцы даты и продаж являются числовыми.

Теперь предположим, что мы пытаемся преобразовать столбец даты в формат даты:

#attempt to convert date column to date format
df$date <- as. Date (df$date)

Error in as.Date.numeric(df$date) : 'origin' must be supplied

Мы получаем ошибку, потому что мы не использовали исходный аргумент в функции as.Date () .

Как исправить ошибку

Чтобы исправить эту ошибку, просто укажите исходную дату, чтобы R знал, как преобразовать числа в даты:

#convert date column to date format, using 2020-01-01 as origin date
df$date <- as. Date (df$date, origin=" 2020-01-01 ")

#view updated data frame
df

 date sales
1 2020-01-28 12
2 2020-05-20 22
3 2020-06-29 30
4 2020-07-19 31

Указав дату происхождения, R преобразовал числа в даты, добавив количество дней к предоставленному источнику.

Например:

  • Первое значение даты 27 было преобразовано в 2020-01-28 путем добавления 27 дней к исходной дате 2020-01-01.
  • Второе значение даты 140 было преобразовано в 2020-05-20 путем добавления 140 дней к исходной дате 2020-01-01.

И так далее.

Мы также можем использовать функцию class() , чтобы подтвердить, что новый столбец действительно является датой:

#display class of date column
class(df$date)

[1] "Date"

Новый столбец теперь представляет собой дату, а не число.

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

В следующих руководствах объясняется, как устранять другие распространенные ошибки в R:

Как исправить в R: имена не совпадают с предыдущими именами
Как исправить в R: более длинная длина объекта не кратна более короткой длине объекта
Как исправить в R: контрасты могут применяться только к факторам с 2 или более уровнями

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