Преобразование целых чисел в дату в R - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу преобразовать мой целочисленный столбец в дату.целое число выглядит следующим образом (20160101).При использовании функции as.Date и вводе аргумента источника равным «2016-01-02», генерируемый новый столбец имеет следующее значение, которое является неправильным «55197-07-06».Так что это не имеет никакого отношения к значению записи.В чем может быть ошибка Я перепробовал так много кодов, и вот один из них:

data$newVar = as.Date(data$YearMonthDay, origin="2016-01-02")

Кроме того, все мои даты в 2016 году, поэтому я хочу отформатировать дату, включив в нее только месяц и день.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

просто для вашего интереса альтернативный подход, использующий lubridate и просто сохраняя месяц и день.

tmp <- as.integer(x = 20160101) tmp %>% lubridate::ymd() %>% format("%m-%d")

Обратите внимание, что после этого у вас останется только строка.

tmp %>% lubridate::ymd() %>% format("%m-%d") %>% is.Date()

Будет FALSE.Без отсечения года это будет TRUE.Таким образом, чтобы сохранить формат даты, как упоминал Тим, альтернативный подход к смазке был бы:

 tmp %>% lubridate::ymd()
0 голосов
/ 20 ноября 2018

Используйте параметр format при вызове as.Date:

dates <- as.character(data$YearMonthDay)
data$newVar = as.Date(dates, format="%Y%m%d")

Обратите внимание, что вам не нужно использовать параметр origin здесь, потому что даже если вы передаете числовые данные,это в форме фактической текстовой даты.origin используется при прохождении количества дней с начала эпохи.

, поэтому я хочу отформатировать дату, включив в нее только месяц и день

Обычно этоНе рекомендуется идти в этом направлении, и в любом случае базовые даты R должны иметь компонент года.Поэтому включите компонент year, и если вы не хотите его использовать, не используйте его.

...