グループ化されたデータから最初の行と最後の行を選択する 質問する

グループ化されたデータから最初の行と最後の行を選択する 質問する

質問

を使用してdplyr、グループ化されたデータの上位と下位の観測値/行を 1 つのステートメントで選択するにはどうすればよいですか?

データと例

データフレームが与えられた場合:

df <- data.frame(id=c(1,1,1,2,2,2,3,3,3), 
                 stopId=c("a","b","c","a","b","c","a","b","c"), 
                 stopSequence=c(1,2,3,3,1,4,3,1,2))

を使用すると、各グループから上位と下位の観測値を取得できますsliceが、2 つの別々のステートメントを使用します。

firstStop <- df %>%
  group_by(id) %>%
  arrange(stopSequence) %>%
  slice(1) %>%
  ungroup

lastStop <- df %>%
  group_by(id) %>%
  arrange(stopSequence) %>%
  slice(n()) %>%
  ungroup

これら2つの文を組み合わせて、両方上部と下部の観察?

ベストアンサー1

おそらくもっと速い方法があります:

df %>%
  group_by(id) %>%
  arrange(stopSequence) %>%
  filter(row_number()==1 | row_number()==n())

おすすめ記事