R中的连续组号

R中的连续组号,r,R,这个问题非常类似于 所以 SOG <- c(4,4,0,0,0,3,4,5,0,0,1,2,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 这是一种选择: replace(cumsum(c(SOG[1], abs(diff(SOG))) == SOG & SOG

这个问题非常类似于

所以

SOG <- c(4,4,0,0,0,3,4,5,0,0,1,2,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
这是一种选择:

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

假设您的意思是一组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

假设您的意思是一组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
您可以从中尝试我的功能

用途如下:

library(SOfun)
TrueSeq(as.logical(SOG))
#  [1] 1 1 0 0 0 2 2 2 0 0 3 3 0 0 0
要得到相反的结果,只需否定as.logical步骤:

您可以从中尝试我的功能

用途如下:

library(SOfun)
TrueSeq(as.logical(SOG))
#  [1] 1 1 0 0 0 2 2 2 0 0 3 3 0 0 0
要得到相反的结果,只需否定as.logical步骤:


什么构成一个群体?什么构成一个群体