Построить временные ряды и определить, сколько раз превышен порог - PullRequest
0 голосов
/ 15 марта 2019

У меня есть CSV с 15-минутным интервалом временных рядов данных, охватывающих несколько лет. Пример формата данных:

    Time stamp  Value
07/07/2003 08:00    10
07/07/2003 08:15    10
07/07/2003 08:30    10.5
07/07/2003 08:45    11
07/07/2003 09:00    13
07/07/2003 09:15    15
07/07/2003 09:30    14.5
07/07/2003 09:45    14
07/07/2003 10:00    10
07/07/2003 10:15    9
07/07/2003 10:30    8
07/07/2003 10:45    11
07/07/2003 11:00    12
07/07/2003 11:15    15
07/07/2003 11:30    13
07/07/2003 11:45    12
07/07/2003 12:00    10

Я бы хотел прочитать это в студии r и нанести временной ряд с отметкой времени на оси x и значением на y.

Вторая часть вопроса заключается в том, сколько раз значение превышает определенный порог, а затем падает ниже этого порога. Например, это => 12 в общей сложности 8 раз в данных примера, встречающихся в 2 отдельных экземплярах или группах во временном ряду. Меня интересует, сколько раз превышено пороговое значение, но ключ вычисляет количество раз, когда временные ряды превышают пороговое значение в таких группах, как описано.

1 Ответ

0 голосов
/ 16 марта 2019

Вот как построить данные. Вам необходимо преобразовать Time_stamp в объект даты / времени, используя as.POSIXct:

df <- read.table(text="    Time_stamp  Value
'07/07/2003 08:00'    10
'07/07/2003 08:15'    10
'07/07/2003 08:30'    10.5
'07/07/2003 08:45'    11
'07/07/2003 09:00'    13
'07/07/2003 09:15'    15
'07/07/2003 09:30'    14.5
'07/07/2003 09:45'    14
'07/07/2003 10:00'    10
'07/07/2003 10:15'    9
'07/07/2003 10:30'    8
'07/07/2003 10:45'    11
'07/07/2003 11:00'    12
'07/07/2003 11:15'    15
'07/07/2003 11:30'    13
'07/07/2003 11:45'    12
'07/07/2003 12:00'    10", header=TRUE, stringsAsFactors=FALSE)
df$Time_stamp <- as.POSIXct(df$Time_stamp, format="%m/%d/%Y %H:%M")

library(ggplot2)
ggplot(data=df, aes(x=Time_stamp, y=Value))+
  geom_line()

enter image description here

А вот как получить последовательность выше и равную 12. Я использую dplyr и rleid из data.table

library(dplyr)
library(data.table)
df%>%
  mutate(above=ifelse(df$Value<12, NA,(rleid(df$Value>=12))))%>%
  na.omit()%>%
  mutate(above=rleid(above))

           Time_stamp Value above
1 2003-07-07 09:00:00  13.0     1
2 2003-07-07 09:15:00  15.0     1
3 2003-07-07 09:30:00  14.5     1
4 2003-07-07 09:45:00  14.0     1
5 2003-07-07 11:00:00  12.0     2
6 2003-07-07 11:15:00  15.0     2
7 2003-07-07 11:30:00  13.0     2
8 2003-07-07 11:45:00  12.0     2
...