我有这样的数据集
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
因此,当您看到连续日期,ID和密钥是否相同时,我想知道如何组合这些观察并添加它们的值。 我只有在连续的事件发生时才需要这样做。 是不是可以做到? 如果有,任何人都可以告诉我该怎么做? 感谢
答案 0 :(得分: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