Преобразовать факторы в дату и время, <fctr>25.10.2008 (M, D, Y) - PullRequest
0 голосов
/ 28 июня 2019

У меня есть фрейм данных с именем RequisitionHistory2 с переменной, называемой RequisitionDateTime, а уровни являются факторами, похожими на 4/30/2019 14:16 Я бы хотел разделить это на RequisitionDate и RequisitionTime в формате datetime.

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

mutate(When = as.POSIXct(RequisitionHistory2, format="%m/%d/%. %H:%M %p"))

Error in as.POSIXct.default(RequisitionHistory2, format = "%m/%d/%. %H:%M %p") : do not know how to convert 'RequisitionHistory2' to class “POSIXct”

Я хотел бы разделить переменную RequisitionDateTime на RequisitionDate и другую переменную RequisitionTime в Dataframe RequisitionHistory2. Любая помощь с благодарностью!

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Пакет в любое время ON CRAN напрямую преобразует из многие форматы , включая factor и ordered, в объекты даты и даты и времени. Он также эвристически пробует несколько жизнеспособных форматов, так что вам не нужна строка формата. См. README на GitHub для ознакомления, также есть виньетка

Ваш пример работает:

R> library(anytime)
R> anytime(as.factor("4/30/2019 14:16"))
[1] "2019-04-30 14:16:00 CDT"
R> anytime(as.factor("4/3/2019 14:16:17"), useR=TRUE)
[1] "2019-04-03 14:16:17 CDT"
R> 

Однако базовый синтаксический анализатор (Boost C ++) не любит однозначные дни или месяцы, поэтому вам может потребоваться вернуться к анализатору R с помощью useR=TRUE, как я делал во втором примере.

0 голосов
/ 28 июня 2019

Не переводите коэффициенты в дату и время напрямую. Сначала вам нужно будет преобразовать его в символ, а затем использовать функцию datetime.

as.Date(as.character("10/25/2018"), format = "%m/%d/%Y")

будет работать для вашего date примера.

library(lubridate)
mutate(df,When = mdy_hm(RequisitionHistory2))

Если ваше время в формате 4/30/2019 14:16

Обратите внимание, что as.POSIXct() работает только с датами, уже имеющими формат ISO 8601. Я написал сообщение в блоге об этом, и я думаю, что было бы полезно для вас проверить: https://jackylam.io/tutorial/uber-data/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...