У меня есть набор данных df с двумя переменными: одна (в порядке возрастания) переменная posixct date.time и одно числовое значение переменной. Значение переменной состоит из серии нулей или серии различных положительных чисел, больших нуля. Длина каждой серии случайна, но больше единицы.
Редактировать: загрузка библиотеки lubridate
library(lubridate)
Набор данных df:
set.seed(10)
df <- data.frame(date.time=seq(ymd_hms("2016-01-01 00:00:00"),ymd_hms("2016-01-01 01:00:00"),length.out = 20),value=c(runif(3,1,3),rep.int(0,4),runif(5,1,3),rep.int(0,4),runif(4,1,3)))
Желаемый результат:
desired.outcome <- cbind(df,peak=c(1,1,1,0,0,0,0,2,2,2,2,2,0,0,0,0,3,3,3,3))
Я хотел бы создать третью переменную, называемую пиком, которая идентифицирует каждую серию положительных чисел, больших нуля, как отдельный «пик». Пик определяется как серия положительных чисел, больших нуля, которые находятся между двумя сериями нулей.
- Какой эффективный способ получить желаемый результат для df> 5 миллионов строк, предпочтительно с использованием data.table или Dplyr?