【发布时间】:2017-05-11 12:15:37
【问题描述】:
我有一个多行少列的 data.frame。我已经对它们进行了分组,现在我想选择特定组中的行,这些行的值应该小于该组的 2 列的第一个四分位数。 以下数据:
df:
ID SD_1 SD_2 clust
4 1.613479812 2.231100475 1
6 2.348970134 4.509710677 1
7 676.6791703 855.1300148 1
8 5.702718972 9.789694982 1
17 0.69905969 1.736578132 1
18 45.94251574 32.40374486 2
20 6.655940714 6.602647859 2
21 0.367147263 0.447369751 2
22 4.316702479 6.618716644 2
25 7.481365283 7.955022446 2
32 14.916817 71.70158686 2
33 0.311656121 0.947110959 2
34 0.555539595 0.438893998 2
36 2.754111181 5.586499991 2
42 8.718620333 12.50393499 3
2 17.04906625 7.825923801 3
3 9.337794688 2.805759945 3
9 3.028141567 4.965291633 3
39 0.770520551 0.676955176 3
55 8.765592871 6.058640263 3
67 0.863034955 1.150017033 3
以上是一种数据,我需要对每个集群值列的行进行子集化,以便对它们进行分组,并将值小于等于df$SD_1 和df$SD2 的第一个四分位数的行进行子集化。
R 中是否有函数或包可以做到这一点?我使用tapply() 通过将行与集群列分组来查找行的第一个四分位数,但现在我想为 df$SD1 和 df$SD2 的第一个四分位数以下的每个集群值过滤这些行。我确信 R 中有一些班轮,但我无法做到这一点。
即使它不是单行的,那么我应该如何在 R 中实现它。
【问题讨论】: