Объединить аналогичные последовательные наблюдения в одно наблюдение в R
У меня есть такой набор данных
date ID key value
05 1 3 2
05 1 3 5
05 1 3 1
05 1 5 2
05 1 7 3
05 1 7 3
05 1 3 4
05 2 9 8
Мне нужен вывод, чтобы выглядеть так
date ID key value
05 1 3 8
05 1 5 2
05 1 7 6
05 1 3 4
05 2 9 8
поэтому, как вы видите, если последовательная дата, идентификатор и ключ совпадают, я хочу знать, как объединить эти наблюдения и добавить их значение. Мне нужно, чтобы это происходило только в том случае, если события были последовательными. Возможно ли это сделать? если да, может кто-нибудь сказать, пожалуйста, как это сделать? Спасибо
1 ответ
Решение
Использование rle
искать последовательные последовательности
# your data
df <- read.table(text="date ID key value
05 1 3 2
05 1 3 5
05 1 3 1
05 1 5 2
05 1 7 3
05 1 7 3
05 1 3 4
05 2 9 8", header=T)
# get consecutive values - add a grouping variables
r <- with(df, rle(paste(date, ID, key)))
df$grps <- rep(seq(r$lengths), r$lengths)
# aggregate values
a <- aggregate(value ~ date + ID + key + grps, data = df , sum)
# remove the grouping variable
a$grps <- NULL