2017-05-24 7 views
-1

指定された条件を満たす行の後にRがNEXT行(選択行+ 1)を抽出する可能性はありますか?例えば、私は私のデータ内の特定の行特定の条件を満たす行の直後に来るすべての行を選択するにはどうすればよいですか?

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

を選択するが、私はこれらの行に興味を持っていないですが、基準をfullfilものの一つに、以下のすべての最初の行...

+0

おそらく 'df1 [(df1 $ criterion ==" example ")+ 1、'? –

+0

'?which'を見てください – 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

これは' df'よりも 'c(F、df $ criterion ==" example ")'にもっと多くの要素があるため動作しません。 'c(F、(df $ criterion ==" example ")[-nrow(df)])' – Pop

+0

あなたは正しいです。もし最後のエントリーが基準を持っていれば、何が起こるべきかOPが言ったら助けになるでしょう。 – jimr1603

0

もう一つの基本的な解決策は:

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

累積和を使用することで、その特定の行の後にすべての行を見ることができます。

関連する問題