1. ホーム
  2. r

[解決済み] グループ化されたデータから先頭行と最終行を選択する

2022-04-22 05:03:07

質問

質問

使用方法 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())