2014-11-26 3 views
2

Доброго утра,R: Преобразование символов в POSIXct теряет часы и минуты

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

hourlyData (dataframe)

Login Expo EquityUSD Period     UnrealizedProfitUSD 
1 252957 0.00 7.187185 2014-02-03 00:00:00.000  0.00000 
2 252957 0.00 7.187772 2014-02-03 01:00:00.000  0.00000 
3 252957 0.00 7.188198 2014-02-03 02:00:00.000  0.00000 
4 252957 0.00 7.187825 2014-02-03 03:00:00.000  0.00000 
5 252957 0.00 7.187079 2014-02-03 04:00:00.000  0.00000 
6 252957 0.00 7.187079 2014-02-03 05:00:00.000  0.00000 
7 252957 0.00 7.188731 2014-02-03 06:00:00.000  0.00000 
8 252957 0.00 7.186279 2014-02-03 07:00:00.000  0.00000 
9 252957 0.00 7.187185 2014-02-03 08:00:00.000  0.00000 

когда я типа класса (hourlyData $ Период) Я получаю Character. Когда я пытаюсь преобразовать этот столбец в качестве такого hourlyData$Period = as.POSIXct(hourlyData$Period), однако, я получаю следующий вывод:
hourlyData

Login Expo EquityUSD Period  UnrealizedProfitUSD 
1 252957 0.00 7.187185 2014-02-03 0.00000 
2 252957 0.00 7.187772 2014-02-03 0.00000 
3 252957 0.00 7.188198 2014-02-03 0.00000 
4 252957 0.00 7.187825 2014-02-03 0.00000 
5 252957 0.00 7.187079 2014-02-03 0.00000 
6 252957 0.00 7.187079 2014-02-03 0.00000 
7 252957 0.00 7.188731 2014-02-03 0.00000 
8 252957 0.00 7.186279 2014-02-03 0.00000 
9 252957 0.00 7.187185 2014-02-03 0.00000 

Где часы и минуты были удалены из колонки Period. Кто-нибудь знает, почему это происходит, или как его предотвратить?

Благодаря

Майк

+0

Возможно, это определенно зависит от ОС, следующая команда дает правильный результат для меня (R 3.1.1 в Mac OS X): 'as.POSIXct (c ('2014-02-03 00: 00: 00.000) ',' 2014-02-03 01: 00: 00.000 ',' 2014-02-03 02: 00: 00.000 ')) '. –

+0

Я также получаю правильный результат, R 3.1.1, windows 7. – Cath

+0

Я действительно обнаружил, что существует ровно одна дата, которая создает проблемы. 2014-03-31 03:00:00. По какой-то неизвестной причине, когда я удаляю эту конкретную дату, выполняется преобразование. Поэтому я думаю, что вы, ребята, правы, это должно сработать, но, возможно, что-то не так с моими данными. Спасибо за помощь! – Mike

ответ

0

Я хотел бы использовать strptime:

char_data = c('2014-02-03 00:00:00.000', '2014-02-03 01:00:00.000', '2014-02-03 02:00:00.000') 
strptime(char_data, '%Y-%m-%d %H:%M:%S') 
[1] "2014-02-03 00:00:00 CET" "2014-02-03 01:00:00 CET" 
[3] "2014-02-03 02:00:00 CET" 
+0

'as.POSIXct' использует' strptime' для синтаксического анализа времени. – Roland

0

"2014-03-31 3:00:00" не является действительным DateTime, где вы живете, как и «2014-03-31 02:59:59» сразу же последовали «2014-03-31 04:00:00» из-за перехода на летнее время.

Смежные вопросы