У меня есть файл, содержащий информацию о дате и времени в виде строки символов. Я хочу преобразовать его в объект POSIXlt даты и времени, и для этого я использую базовую функцию strftime() в R.
Хотя команда работает нормально, когда я передаю ей строку символов или когда я применяю ее к небольшому фрагменту кадра данных, когда я применяю ее к большему фрагменту или ко всему массиву данных, она не может захватить час. Пожалуйста, смотрите ниже:
d = "2017-11-18 01:00:00"
t = strftime(d, format = "%Y-%m-%d %H:%M")
t
'2017-11-18 01:00'
head(data %>% dplyr::slice(1:1000) %>% mutate(DateTime1 = strftime(DateTime, format = "%Y-%m-%d %H:%M")))
DateTime Junction Vehicles ID DateTime1
2015-11-01 00:00:00 1 15 20151101001 2015-11-01 00:00
2015-11-01 01:00:00 1 13 20151101011 2015-11-01 01:00
2015-11-01 02:00:00 1 10 20151101021 2015-11-01 02:00
2015-11-01 03:00:00 1 7 20151101031 2015-11-01 03:00
2015-11-01 04:00:00 1 9 20151101041 2015-11-01 04:00
2015-11-01 05:00:00 1 6 20151101051 2015-11-01 05:00
head(data %>% mutate(DateTime1 = strftime(DateTime, format = "%Y-%m-%d %H:%M")))
DateTime Junction Vehicles ID DateTime1
2015-11-01 00:00:00 1 15 20151101001 2015-11-01 00:00
2015-11-01 01:00:00 1 13 20151101011 2015-11-01 00:00
2015-11-01 02:00:00 1 10 20151101021 2015-11-01 00:00
2015-11-01 03:00:00 1 7 20151101031 2015-11-01 00:00
2015-11-01 04:00:00 1 9 20151101041 2015-11-01 00:00
2015-11-01 05:00:00 1 6 20151101051 2015-11-01 00:00
Как объяснить это неустойчивое поведение и как преобразовать столбец даты и времени для всего набора данных?
Ваш совет будет оценен.
dput()
для печати структуры и содержимого вашего набора данных. - person Martin Schmelzer   schedule 18.11.2017data$DateTime
является строкой? Вы когда-нибудь получали воспроизводимый пример? Как правило, проблемы возникают из-за отсутствия, неполного или лишнего текста, такого как часовой пояс, миллисекунды и т. д. В любом случае, сторонние библиотеки дат, такие как lubridate, более отказоустойчивы. - person smci   schedule 21.05.2018read.csv()
или любую другую команду, которую вы использовали для преобразования его в фрейм данных, который вы нам показываете, илиdput()
на этом кадр данных. Я полагаю, у вас былоstringsAsFactors = FALSE
- person smci   schedule 21.05.2018