R how to identify distance of last occurrence
data.table, r
Solution
This should do it:
d[, distance := 1:.N - 1, by = cumsum(light)]
or this:
d[, distance := .I - .I[1], by = cumsum(light)]
And if you want to actually count number of days as opposed to row-distance, you could use:
d[, distance := as.numeric(as.POSIXct(date, format = "%m/%d/%Y") -
as.POSIXct(date[1], format = "%m/%d/%Y"),
units = 'days'),
by = cumsum(light)]
Problem
I want to calculate how long its been since something occurred. Given the following, you can see that the light is on some of the time, but not all of the time. I want to normalize the data to feed it to a neural network. ``` library(data.table) d<-data.table( date = c("6/1/2013", "6/2/2013","6/3/2013","6/4/2013"), light = c(TRUE,FALSE,FALSE,TRUE) ) d date light 1: 6/1/2013 TRUE 2: 6/2/2013 FALSE 3: 6/3/2013 FALSE 4: 6/4/2013 TRUE ``` what I'd like to calculate is another column that shows the "distance" to the last occurrence. so for the data above: first row, since its on it should be zero second row, should be 1 third row, should be 2 fourth row, should be zero