2017-05-24 33 views
-1

R是否有可能在符合指定条件的行之后提取NEXT行(选择行+ 1)?比如我在数据如何在满足特定标准的行后选择所有来到下一个行的行?

df1[df1$criterion == "example", ] 

选择特定的行,但我没有兴趣在这些行,但随后那些满足要标准的每一个第一排......

+0

也许'df1 [which(df1 $ criterion ==“example”)+ 1,]'? –

+0

看看'?哪个' – Sotos

+0

非常有帮助,谢谢 –

回答

1

你可以这样做:

indices <- which(df1$criterion == "example")[- nrow(df1)] + 1 
df1[indices, ] 

基本上,你用它来把你的TRUE/FALSE掩码转换成索引。部分[- nrow(df)]通过删除它(无论它的值)来处理掩码的最后一个元素是TRUE的情况。

0
df[c(F,df$criterion == "example")] 

这只是通过在开始时附加一个FALSE来抵消掩码标志。

+0

这不起作用,因为'c(F,df $ criterion ==“示例”)'中的元素多于'df'。你应该这样做:'c(F,(df $ criterion ==“example”)[ - nrow(df)])' – Pop

+0

你是对的。如果OP说如果最后一个条目具有标准应该发生什么行为,这将会有所帮助。 – jimr1603

0

另一个基本的解决方案:

df1$cummeet <- cumsum(df1$criterion == "example") 
df1[df1$cummeet > 0] 

通过使用累计总和,您可以在特定行后看到的所有行。

相关问题