根据组的最大值子集数据帧

时间:2015-11-29 20:03:28

标签: r subset cumsum

我正在尝试创建一个数据框的子集,条件是其中一列的分组累积总和(即Total的cumsum,按下面的Year分组)。

我有一个人口表,如下所示(简化)

Year    Age Total   Cum.Sum
1991    20  94619   94619
1991    21  97455   192074
1991    22  101418  293492
1991    23  104192  397684
1991    24  108332  506016
1991    25  111355  617371
1991    26  114569  731940
1991    27  113852  845792
1991    28  112264  958056
1991    29  110230  1068286
1991    30  109149  1177435
1991    31  108222  1285657
1991    32  106641  1392298
1991    33  106658  1498956
1991    34  104730  1603686
1991    35  103383  1707069
1991    36  101441  1808510
1991    37  99773   1908283
1991    38  100621  2008904
1991    39  98135   2107039
1991    40  101946  2208985
2010    20  93470   93470
2010    21  94762   188232
2010    22  92527   280759
2010    23  94696   375455
2010    24  95416   470871
2010    25  98016   568887
2010    26  98387   667274
2010    27  102254  769528
2010    28  103343  872871
2010    29  105179  978050
2010    30  104278  1082328
2010    31  104099  1186427
2010    32  105240  1291667
2010    33  105316  1396983
2010    34  106250  1503233
2010    35  109019  1612252
2010    36  110044  1722296
2010    37  113949  1836245
2010    38  118086  1954331
2010    39  119845  2074176
2010    40  123647  2197823

现在我想对这个数据框进行分组,以便每年的累积总和不会超过某个阈值,例如

   1991    2010 
1605897 1803476

我不希望每年都有单独的数据集。

1 个答案:

答案 0 :(得分:1)

这样做:

t.h <-  read.table(header=TRUE, text=
'Year   th
1991   1605897
2010 1803476')
d <- merge(dataset, t.h)
subset(dataset, Cum.Sum < t.h)