У меня есть эти данные:
library(tidyverse)
library(lubridate)
dates <- c("01/01/18 1:00:00 PM" ,"01/01/18 1:01:00 PM",
"01/01/18 1:02:00 PM" ,"01/01/18 1:03:00 PM",
"01/01/18 1:04:00 PM" ,"01/01/18 1:05:00 PM",
"01/01/18 1:06:00 PM" ,"01/01/18 1:07:00 PM",
"01/01/18 1:08:00 PM" ,"01/01/18 1:09:00 PM",
"01/01/18 1:10:00 PM" ,"01/01/18 1:11:00 PM")
vals <- c(1, 2, 3, 3, 15, 16, 17, 18, 1, 2, 1, 22)
datfr <- data.frame(dates, vals)
datfr$dates <- dmy_hms(datfr$dates)
Я хочу применить условие:
if the val is < 4 for 2 continuous minutes period then true
Я пытался:
datfr$gr <- datfr %>%
group_by(by2min = cut(dates, "2 min")) %>%
summarise(cond = (vals < 4))
но это дает мне:
column cond must be length 1 not 2
и я не уверен в подходе.
Итак, мой ожидаемый результат:
dates vals cond
1 2018-01-01 13:00:00 1
2 2018-01-01 13:01:00 2
3 2018-01-01 13:02:00 3 TRUE
4 2018-01-01 13:03:00 3
5 2018-01-01 13:04:00 15 FALSE
6 2018-01-01 13:05:00 16
7 2018-01-01 13:06:00 17 FALSE
8 2018-01-01 13:07:00 18
9 2018-01-01 13:08:00 1 FALSE
10 2018-01-01 13:09:00 2
11 2018-01-01 13:10:00 1 TRUE
12 2018-01-01 13:11:00 22
Следовательно, если в течение 2 непрерывных минут значение <4, то истина. </p>