忽略第二次或更多次连续0

Sau*_*han 3 r dataframe

我试图解决这个非常基本的例子并尝试提取以下数据:

count   SN  data.stamp 
1   00601   2018-07-26 13:38:39       
0   00601   2018-11-05 23:00:09       
0   00601   2018-11-05 23:00:16        
4   00601   2018-11-12 23:00:05        
0   00601   2018-12-12 23:00:05        
5   00601   2018-11-12 23:00:05        
0   00601   2018-12-12 23:00:05
0   00601   2018-11-12 23:00:05        
0   00601   2018-12-12 23:00:05
Run Code Online (Sandbox Code Playgroud)

预期产量:

count   SN  data.stamp 
1   00601   2018-07-26 13:38:39       
0   00601   2018-11-05 23:00:09       
4   00601   2018-11-12 23:00:05        
0   00601   2018-12-12 23:00:05        
5   00601   2018-11-12 23:00:05        
0   00601   2018-12-12 23:00:05
Run Code Online (Sandbox Code Playgroud)

我想只考虑单0值计数.如果有多个0值计数,那么它应该只考虑第一个值并忽略其余的0计数.

基本上,我只寻找第一个零值,然后是非零值.

我尝试过使用,rle但我想从中提取数据data.frame.rle可以给我有关值和长度的信息.我可以写for循环来检查,但寻找一个快速和简短的方法.

Cat*_*ath 5

在基数R中,您可以对data.frame进行子集化,以仅获取count与0不同的行或count为0,但前一行与零不同:

df[df$count!=0 | (df$count==0 & c(TRUE, head(df$count, -1)!=0)), ]
# (or: subset(df, count!=0 | (count==0 & c(TRUE, head(count, -1)!=0))))

#  count  SN          data.stamp
#1     1 601 2018-07-26 13:38:39
#2     0 601 2018-11-05 23:00:09
#4     4 601 2018-11-12 23:00:05
#5     0 601 2018-12-12 23:00:05
#6     5 601 2018-11-12 23:00:05
#7     0 601 2018-12-12 23:00:05
Run Code Online (Sandbox Code Playgroud)