我有一个数据帧值,并以groupID
和date
分类:计数和条件,组
d1 <- data.frame(groupID = c(1,1,1,1,1,3,3,3,3),
date = c(1,2,3,4,5,6,7,8,9),
value = c(1,1,25,1,1,25,1,25,1))
> d1
groupID date value
1 1 1
1 2 1
1 3 25
1 4 1
1 5 1
3 6 25
3 7 1
3 8 25
3 9 1
我要创建两个新的栏目:
- 对于25每次出现,每个组的前值计数= 1
- 对于每次出现的25,在值= 25之后值= 1之前的值在每个组的下一个值= 25之前为
所需的输出:
groupID date value Prev1s After1s
1 1 1
1 2 1
1 3 25 2 2
1 4 1
1 5 1
3 6 25 0 1
3 7 1
3 8 25 1 1
3 9 1
我能够通过创建一个计数器,并采取前值做使用Excel一样。我曾尝试在R中使用sum
,shift()
来达到相同效果,但徒劳无益。
看看'rle'功能。 –
顺便说一下,第二个'Prev1s'应该是2,而不是0。 –
不是,应该是0.(按groupID分组) –