質問
を使用して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())