Получите среднесуточное из высокочастотных измерений - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть 15-минутные наблюдения температуры воздуха Temp данные, для которых я хотел бы получить среднесуточное значение. Я пытался использовать пакет openair с функцией timeAverage, чтобы получить этот ответ, поскольку он позволяет пользователю установить минимальный порог для количества пропущенных данных, который разрешен, прежде чем он получит среднесуточное значение. Однако я продолжаю получать одно и то же сообщение об ошибке, связанное с невозможностью найти переменную date.

. Вот пример моего фрейма данных

> head(dat)
              Date Temp
1: 2001-01-01 0:00   NA     
2: 2001-01-01 0:15 -1.4
3: 2001-01-01 0:30 -1.1
4: 2001-01-01 0:45 -1.1
5: 2001-01-01 1:00 -0.9
6: 2001-01-01 1:15 -0.5

. Вот код, который я использовал используя

dailyAVG <- timeAverage(mydata = dat,
                        avg.time = "day",
                        data.thresh = 75,
                        statistic = "mean",
                        start.date = "2001-01-01 0:00")

, который выдает это сообщение об ошибке

Can't find the variable(s) date 
Error in checkPrep(mydata, vars, type = "default", remove.calm = FALSE,  : 

1 Ответ

0 голосов
/ 24 апреля 2020

Я нашел хакерский способ обойти сообщение об ошибке. Я переименовал столбец Date в MS Excel в date. Затем я также в MS Excel переформатировал столбец date в формат гггг-мм-дд чч: мм. После внесения этих исправлений я прочитал файл .csv в R и сделал следующие корректировки:

В этом первом исправлении получим формат date в тот, который openair любит

dat$date <- as.POSIXct(dat$date, tz = "", "%Y-%m-%d %H:%M")

После исправления формата date я столкнулся с другой проблемой, связанной с измерениями моей температуры Temp. По какой-то причине R воспринимал значения как символ класса, когда они должны быть цифрами c. Это было исправлено с помощью

dat$Temp <- as.numeric(dat$Temp)

После внесения этих исправлений функция timeAverage работала с использованием следующего кода

dailyAVG <- timeAverage(mydata = dat,
                        avg.time = "day",
                        data.thresh = 75)
> dailyAVG
# A tibble: 2 x 2
  date                 Temp
  <dttm>              <dbl>
1 2001-01-01 00:00:00  3.01
2 2001-01-02 00:00:00  1.85
...