簡體   English   中英

R中的連續組號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM