R: создание объекта xts изменяет формат времени

#r #xts #posixct

#r #xts #posixct

Вопрос:

 > str(s)
 POSIXct[1:6630], format: "2011-02-14 09:31:00" "2011-02-14 09:32:00" "2011-02-14 09:33:00" "2011-02-14 09:34:00" ...
> head(s)
[1] "2011-02-14 09:31:00 EST" "2011-02-14 09:32:00 EST" "2011-02-14 09:33:00 EST" "2011-02-14 09:34:00 EST"
[5] "2011-02-14 09:35:00 EST" "2011-02-14 09:36:00 EST"
> 


> head(AMKR)
  date_holding time_holding close
1   2011-02-14     09:31:00  7.66
2   2011-02-14     09:32:00  7.58
3   2011-02-14     09:33:00  7.54
4   2011-02-14     09:34:00  7.54
5   2011-02-14     09:35:00  7.56
6   2011-02-14     09:36:00  7.54

> as.xts(AMKR[,-1:-2], s) -> newAMKR
> head(newAMKR)
                    [,1]
2011-02-14 00:00:00 7.74
2011-02-14 00:01:00 7.74
2011-02-14 00:02:00 7.74
2011-02-14 00:03:00 7.74
2011-02-14 00:04:00 7.74
2011-02-14 00:05:00 7.73
  

Как вы можете видеть, время изменилось.

Тикер ‘AMKR’ извлекается из базы данных MySQL, расположенной на том же компьютере.

Если кто-нибудь может указать мне правильное направление, я был бы очень признателен.

================================================

Обновление: Было несколько проблем.

1) Загрузка данных в MySQL была выполнена с использованием формата времени, установленного в %h:%i:%s, когда он должен был быть установлен в %H:%i:%s (обратите внимание на заглавную H).

2) Я удалил данные в MySQL и повторно загрузил с помощью H. Теперь я получаю время 12: 00: 00 для цитаты, происходящей в 12 часов дня, но оно отображается как.xts интерпретирует это как 12 часов ночи, и поэтому все цитаты, которые происходят между 12:00:00 и 04:00: 00, интерпретируются как относящиеся к am.

Интересно, почему MySQL не преобразовал время в 24-часовой формат часов, поскольку я использовал %H в запросе ЗАГРУЗКИ ДАННЫХ. Интересно, есть ли способ принудительно изменить R через as.POSIXct. Расследование…..

Комментарии:

1. Вы не предоставили достаточно информации, чтобы точно ответить на вопрос. Пожалуйста, предоставьте воспроизводимый пример.

2. Я не могу воспроизвести это поведение. Вы заметили, что значения newAMKR отличаются от значений в AMKR? Я полагаю, что в вашей сессии есть что-то не то, что вы думаете.

3. Спасибо, Йорис, что указал на это. Это привело меня к открытию, что формат времени является корнем проблемы. В настоящее время я занимаюсь расследованием. Спасибо за вашу помощь.

4. Я разобрался с проблемой. Мне нужно загрузить данные в MySQL, используя следующий формат времени: ‘%h:%i:%s%p’. Ранее я не указывал %p . Также, когда вы используете %p , вам нужно использовать нижний регистр %h .

5. Спасибо, Джошуа! Я просто последовал вашему предложению.

Ответ №1:

Я разобрался с проблемой. Мне нужно загрузить данные в MySQL, используя следующий формат времени: ‘%h:%i:%s%p’. Ранее я не указывал %p. Также, когда вы используете %p, вам нужно использовать %h в нижнем регистре.