一般に、1つの列の分布のデータフレームの上位5分の1を取得します。ただし、別の列のすべての一意のカテゴリ値の上位5分の1になる必要があります。いくつかのカテゴリ値の上位5分位
私はそれがいくつかのステップで、潜在的にループで行われなければならないと思います。最初は、固有のカテゴリ値に基づいてデータフレームを分離し、次にすべての新しいデータフレームの上位5分の1を保持し、最後にデータフレームを最後に再度バインドする必要があります。 しかし、私はこれを行う方法はわかりません。
いくつかのサンプルデータ:ステップ1では
dat <- data.frame(x = rep(letters[1:3],times = 5),
y = rep(1:3,each = 5))
> dat
x y
1 a 1
2 b 1
3 c 1
4 a 1
5 b 1
6 c 2
7 a 2
8 b 2
9 c 2
10 a 2
11 b 3
12 c 3
13 a 3
14 b 3
15 c 3
私はすべてのユニークなカテゴリ値のデータフレームを作成したいです。何かのように:それに応じ
df.bとdf.c
> df.a
x y
1 a 1
2 a 1
3 a 2
4 a 2
5 a 3
第2段階で、私はすべての新しいデータフレームのトップ五分位を維持したいです。ような何か:
このなった場合:最後のステップで
> df.a=df.a[df.a$y > quantile(df.a, 0.5, na.rm = TRUE),]
# taking the top 50% because the top quintile would not work with the sample data.
、私はすべての新しいデータフレームをrbindする必要があります。