#time-series #gfortran #missing-data
#временные ряды #gfortran #отсутствует-данные
Вопрос:
Я использую gfortran. У меня небольшой опыт работы с ним (в основном научное программирование). У меня есть массив данных (считываемых как символы), аналогичный следующему:
12/1/2009 0:00 296 3161 -20.38
12/1/2009 1:00 297 3161 -20.18
12/1/2009 3:00 298 3161 -19.56
Мне нужна автоматическая программа, которая может просматривать временные метки и определять, отсутствует ли одна из них на основе заданного ожидаемого интервала времени (для примера выше это будет 1 час). Я могу придумать способы проверки отсутствия временных меток, но для этого требуется написать огромное количество операторов if или текстовый файл, содержащий список всех временных меток за прошлые и будущие 5 лет.
Есть ли какая-либо встроенная функция, которая может упростить это?
Данные представлены в виде ММ / ДД / ГГГГ Ч: МИН… . У меня есть способ получить месяц, день, год, час и минуту данных. Я не знаю полезного способа сравнить временные метки и определить, отсутствуют ли они.
Конечная цель — найти, где находятся эти отсутствующие временные метки, заполнить их и поместить «NAN» или пробелы в остальные столбцы, соответствующие этой временной метке.
12/1/2009 0:00 296 3161 -20.38
12/1/2009 1:00 297 3161 -20.18
12/1/2009 2:00
12/1/2009 3:00 298 3161 -19.56
Ответ №1:
В конце концов я это выяснил. Я могу преобразовать год, месяц, день, час, минуту и секунду в число юлианского дня.
Затем я преобразую ожидаемую разницу во времени в значение дня по юлианскому календарю (я говорю значение, поскольку технически это не число дня по юлианскому календарю).
Вычтите два последовательных числа юлианского дня. Если их разница не равна значению дня по Юлианскому календарю, отсутствует временная метка. Обратите внимание, что этим методом будут обнаружены две повторяющиеся временные метки, упорядоченные последовательно.
Я не определил метод автоматического исправления этого, поскольку могут появиться другие возможные ошибки.