我试图解决这个非常基本的例子并尝试提取以下数据:
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循环来检查,但寻找一个快速和简短的方法.
在基数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)