Lubridate создает новую колонку 'year', но возвращает NA - PullRequest
0 голосов
/ 15 февраля 2020

Когда я делаю:

df2$year <- format(as.Date(df2$DATE, "%m/%d/%y") , "%Y")

Возвращает столбец с именем 'year', полный NA *

data

structure (list(DATE = structure(1:6, .Label = c("1951-01-01", "1951-04-01", "1951-07-01", "1951-10-01", "1952-01-01", "1952-04-01", "1952-07-01", "1952-10-01", "1953-01-01", "1953-04-01", "1953-07-01", [...]), class = "factor"), GPDIC1 = c(300.363, 307.326, 284.697, 262.013, 268.85, 248.58)), .Names = c("DATE", "GPDIC1"), row.names = c(NA, 6L), class = "data.frame")

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Вы должны указать формат в as.Date, который присутствует в ваших данных. В этом случае вы можете напрямую использовать as.Date

df2$year <- format(as.Date(df2$DATE), "%Y")
#Or explicitly mention
#df2$year <- format(as.Date(df2$DATE, "%Y-%m-%d"), "%Y")

или использовать функцию year из lubridate

df2$year <- lubridate::year(df2$DATE)
0 голосов
/ 15 февраля 2020

Мы можем преобразовать в Date класс с as.IDate из data.table и извлечь с year из того же пакета

library(data.table)
df2$year <- year(as.IDate(df2$DATE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...