我有一个数据库,其中每个人在一段时间内对某个测试进行了多次评估:
id, time, test
1,01/01/2000,40
1,05/03/2001,42
1,12/08/2006,44
2,03/03/1999,34
2,04/05/2001,34
2,03/07/2003,36
3,04/08/2007,40
3,05/09/2007,44
3,06/09/2012,48
我想知道每个人是否经历了任何高原(即在时间内连续测试的相同值),以及这些人是多长时间(表示为天数)。
任何人都可以帮助我吗?谢谢!
答案 0 :(得分:0)
您可以使用基础R rle
来实现此目的。如,
by(df, df$id, function(x) {
d <- as.data.frame(t(do.call(rbind, rle(df$scale))))
d[d$lengths > 1, ]
})
df$id: 1
lengths values
4 2 34
---------------------------------------------------------------------------------------------
df$id: 2
lengths values
4 2 34
---------------------------------------------------------------------------------------------
df$id: 3
lengths values
4 2 34