SparkR - извлечение месяца из поля даты

Я использую Databricks и SparkR, пытаясь извлечь месяц из поля даты, но продолжаю получать следующую ошибку при попытке использовать функцию month ():

Ошибка в as.POSIXlt.default (x, tz = tz (x)): Ошибка в as.POSIXlt.default (x, tz = tz (x)): не знаю, как преобразовать 'x' в класс «POSIXlt»

Если я использую dayofmonth (), он работает отлично, поэтому я не уверен, что делаю не так.

Вот примеры полей, с которыми я пытаюсь работать.

$ Net_due_date: Дата 2017-10-06 2017-10-05 2018-01-17 2017-12-23 2017-08-20 2018-01-17 $ Clearing_Date: Дата 2017-10-06 2017-10-17 1900-01-01 2017-12-26 2017-08-24 2018-01-19

Любые идеи?

Спасибо

Работа с датами и временем в языке Java
Работа с датами и временем в языке Java
Работа с датами и временем в языке Java была сильно переработана начиная с версии Java 8 и далее с появлением библиотеки java.time.
0
0
398
2

Ответы 2

Я не могу быть уверен без воспроизводимого примера, но сначала попробуйте привести столбец к метке времени.

df$Net_due_date_month <- month(cast(df$Net_due_date, 'timestamp'))

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

chigs 01.08.2018 14:38

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

Вы можете попробовать любой из этих вариантов ниже:

library(lubridate)

df$Net_due_date_month <- month(as.Date(df$Net_due_date, format = '%Y-%m-%d'))

или же

df$Net_due_date_month <- month(as.POSIXlt(df$Net_due_date, format = '%Y-%m-%d'))

Другие вопросы по теме