我有一個數據幀值,並以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分組) –