【发布时间】:2017-06-26 18:26:52
【问题描述】:
一般来说,我想获得一列分布的数据框的前五分之一。但是,它必须是另一列的每个唯一分类值的前五分之一。
我想它必须分几个步骤来完成,可能需要一个循环。首先,我需要根据唯一的分类值分离数据帧,然后只保留每个新数据帧的前五分位数,最后再将数据帧重新绑定在一起。 但我不知道该怎么做。
一些样本数据:
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
在第 1 步中,我想为每个唯一的分类值创建一个数据框。类似的东西:
> df.a
x y
1 a 1
2 a 1
3 a 2
4 a 2
5 a 3
df.b 和 df.c 相应
在第二步中,我只想保留每个新数据框的前五分之一。比如:
应该变成这样:
> 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.
在最后一步,我需要重新绑定所有新的数据帧。
【问题讨论】: