以下は、適切に行う方法について合理的に当惑しています。私はそれがおそらく単純だと知っていますが、私はそれを理解できません。dplyrを使用して最大値より前のすべての値をフィルタリングしてください
私は、水に吊り下げられた器具でデータを収集していると言います。データに無関係に、深度の読み取りが行われます。私はちょうどの方法でデータに興味があり、途中からすべてのデータをフィルタリングしたいとします。より明示的には、深度測定値の前に、の前に最も低い値のdepth
をフィルタリングしたいと思います。小さなキャッチの1つは、しばしば、データに深い点まで続く前に、わずかに上がる2つの深度の値があることです。したがって、純粋な昇順/降順の問題ではありません。理想的にはdplyr
アプローチ(またはdplyr
とうまくいくもの)を使用します。なぜなら、データにグループがあるからです。ここではいくつかのダミーデータは次のとおりです。
library(dplyr)
df1 <- data.frame(depth=c(1:6,5,7:10,10.5:1), x=rnorm(21), Group="x")
df2 <- data.frame(depth=c(1:6,5,7:10,10.5:1), x=rnorm(21), Group="y")
df <- rbind(df1, df2)
私は簡単に最も深い価値を見つけることができる午前として立ち往生保つ:
df %>% mutate(depth==max(depth))
私も(マルクの答え@使用して)一つのグループのための深さを見つけることができます:
しかしdf %>%
filter(Group=="x") %>%
add_rownames() %>%
filter(rowname %in% c(seq(which.max(depth))))
、私は私はまだ最初のグループから望ましい結果を得るgroup_by
文を追加してみてください:
df %>%
add_rownames() %>%
group_by(Group) %>%
filter(rowname %in% c(seq(which.max(depth))))
group_by
はフィルタで動作するとは思っていませんでしたが、フィルタを使用しないでrownamesをサブする方法はわかりません。ここにどんなアイデア?
@Psidom - Iは、上記に述べたように、それは私が一致する必要が昇順/降順パターンが厳密ではありません。 – boshek
@ Marcの答えはあなたに必要なものを与えますか? – Psidom
@Psidom正確ではありません。私は 'dplyr'のようなアプローチでこれをどのように適用するかを考えていません。 – boshek