![](/img/trans.png)
[英]R - Count consecutive occurrences of a specific number based on a specific group
[英]Consecutive group number in R
此問題與R中的列值更改后的連續值非常相似
因此對於
SOG <- c(4,4,0,0,0,3,4,5,0,0,1,2,0,0,0)
區別在於,現在我要計算有多少組SOG。 例如:
SOG Trips
--- -----
4 1
4 1
0 0
0 0
0 0
3 2
4 2
5 2
0 0
0 0
1 3
2 3
0 0
0 0
0 0
任何人?
假設您的意思是“一組SOG”是一組連續的非零SOG值,即以非零SOG值開始並以非零SOG值(不一定是相同的值)結束:
Trips <- ifelse(SOG>0, cumsum(c(SOG[1]>0, diff(SOG>0)) == 1), 0)
# [1] 1 1 0 0 0 2 2 2 0 0 3 3 0 0 0
這是一個選擇:
replace(cumsum(c(SOG[1], abs(diff(SOG))) == SOG & SOG != 0), SOG == 0, 0)
# [1] 1 1 0 0 0 2 2 2 0 0 3 3 0 0 0
您可以從僅限GitHub的“ SOfun”包中試用TrueSeq
函數。
用法是:
library(SOfun)
TrueSeq(as.logical(SOG))
# [1] 1 1 0 0 0 2 2 2 0 0 3 3 0 0 0
要求逆,只需取消as.logical
步驟即可:
TrueSeq(!as.logical(SOG))
# [1] 0 0 1 1 1 0 0 0 2 2 0 0 3 3 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.