У меня есть таблица данных в R, которая выглядит следующим образом:
city year target
1: NYC 2000 0
2: NYC 2000 1
3: NYC 2000 1
4: LA 2000 0
5: LA 2000 0
6: LA 2000 1
7: LA 2000 1
, которую можно создать с помощью:
data = data.table(city = c("NYC", "NYC", "NYC", "LA", "LA", "LA", "LA"),
year = c(2000, 2000, 2000, 2000, 2000, 2000, 2000),
target = c(0, 1, 1, 0, 0, 1, 1))
Я хотел бы сгруппировать их по city
иyear
и найдите индекс первого ненулевого элемента в столбце target
, чтобы я мог изменить его, желаемый результат должен выглядеть следующим образом:
city year target
1: NYC 2000 0
2: NYC 2000 666
3: NYC 2000 1
4: LA 2000 0
5: LA 2000 0
6: LA 2000 666
7: LA 2000 1
любая помощь приветствуется.
следующее не работает:
cutoff_thresh <- function(x, cutoff) {x > cutoff}
helper <- data %>%
group_by(city, year) %>%
mutate(thresh = detect_index(.x = target,
.f = cutoff_thresh,
cutoff = 0)
)
Он выдает точный день данного года, в котором появляется первый ненулевой элемент, он начинает считать в первый день каждого года.Итак, если в 2000 году 365 дней, а во 2-й день 2001 года мы отличны от нуля, он возвращает 2
для (NYC, 2001)
вместо 365 + 2
.Не удивительно!