df <- data.frame(datetime=c('1/1/2015 0:00','1/1/2015 0:01','1/1/2015 0:02','1/1/2015 0:03','1/1/2015 0:04','1/1/2015 0:05','1/1/2015 0:06','1/1/2015 0:07','1/1/2015 0:08','1/1/2015 0:09','1/1/2015 0:10','1/1/2015 0:11','1/1/2015 0:12','1/1/2015 0:13','1/1/2015 0:14','1/1/2015 0:15','1/1/2015 0:16','1/1/2015 0:17'),alarm=c('NO','NO','NO','NO','NO','NO','NO','NO','NO','NO','YES','NO','NO','NO','YES','NO','NO','NO'),stringsAsFactors=F);
df$datetime <- as.POSIXct(df$datetime,'%d/%m/%Y %H:%M',tz='UTC');
w <- which(df$alarm=='YES');
df$diff <- difftime(df$datetime,df$datetime[c(1L,w)[findInterval(seq_along(df$alarm),w)+1L]],units='hours');
df;
## datetime alarm diff
## 1 2015-01-01 00:00:00 NO 0.00000000 hours
## 2 2015-01-01 00:01:00 NO 0.01666667 hours
## 3 2015-01-01 00:02:00 NO 0.03333333 hours
## 4 2015-01-01 00:03:00 NO 0.05000000 hours
## 5 2015-01-01 00:04:00 NO 0.06666667 hours
## 6 2015-01-01 00:05:00 NO 0.08333333 hours
## 7 2015-01-01 00:06:00 NO 0.10000000 hours
## 8 2015-01-01 00:07:00 NO 0.11666667 hours
## 9 2015-01-01 00:08:00 NO 0.13333333 hours
## 10 2015-01-01 00:09:00 NO 0.15000000 hours
## 11 2015-01-01 00:10:00 YES 0.00000000 hours
## 12 2015-01-01 00:11:00 NO 0.01666667 hours
## 13 2015-01-01 00:12:00 NO 0.03333333 hours
## 14 2015-01-01 00:13:00 NO 0.05000000 hours
## 15 2015-01-01 00:14:00 YES 0.00000000 hours
## 16 2015-01-01 00:15:00 NO 0.01666667 hours
## 17 2015-01-01 00:16:00 NO 0.03333333 hours
## 18 2015-01-01 00:17:00 NO 0.05000000 hours
? – krlmlr