将类似的连续观察结合到R中的一个观察中

时间:2014-05-26 01:08:08

标签: r statistics usage-statistics

我有这样的数据集

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和密钥是否相同时,我想知道如何组合这些观察并添加它们的值。 我只有在连续的事件发生时才需要这样做。 是不是可以做到? 如果有,任何人都可以告诉我该怎么做? 感谢

1 个答案:

答案 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