#r #datetime #count #data.table
Вопрос:
У меня такой вопрос: если у меня есть следующий кадр данных
time y x PREC Month
1: 2015-01-01 01:00:00 4905.5 660.5 0 1
2: 2015-01-01 01:00:00 4905.5 661.5 0 1
3: 2015-01-01 01:00:00 4905.5 662.5 0 1
4: 2015-01-01 01:00:00 4905.5 663.5 0 1
5: 2015-01-01 01:00:00 4905.5 664.5 0 1
---
21894996: 2015-12-31 22:00:00 4954.5 705.5 0 12
21894997: 2015-12-31 22:00:00 4954.5 706.5 0 12
21894998: 2015-12-31 22:00:00 4954.5 707.5 0 12
21894999: 2015-12-31 22:00:00 4954.5 708.5 0 12
21895000: 2015-12-31 22:00:00 4954.5 709.5 0 12
и я хочу добавить в свой фрейм данных новый столбец, который подсчитывает последовательные дни с условием: Подсчитывайте последовательные дни, если «PREC» равно 0.
Я пытаюсь с:
setDT(data)
data[, Consec_Days := ifelse(PREC = 0, 1:.N, 0L), by = rleid(PREC = 0)]
но это не сработает…
Есть какие-нибудь идеи?
Заранее большое вам спасибо!
Ответ №1:
Вы можете попробовать —
library(data.table)
data <- data.frame(row = 1:10, PREC = c(0, 0, 0, 1, 1, 0, 0, 0, 0, 1))
setDT(data)
data[, Consec_Days := seq_len(.N),rleid(PREC == 0)]
data[PREC != 0, Consec_Days := NA]
data
# row PREC Consec_Days
# 1: 1 0 1
# 2: 2 0 2
# 3: 3 0 3
# 4: 4 1 NA
# 5: 5 1 NA
# 6: 6 0 1
# 7: 7 0 2
# 8: 8 0 3
# 9: 9 0 4
#10: 10 1 NA