根据另一列

时间:2016-02-15 16:52:43

标签: r

大家。我是R的初学者,有一个我无法理解的问题。我已在Stack Overflow中创建了多个查询来解决我的问题(指向结果hereherehere的链接),但没有一个解决了我的问题。关于问题:我有来自更大数据集的子集数据帧DAV。

> str(DAV)

'data.frame':   994 obs. of  9 variables:

$ MIL.ID     : Factor w/ 18840 levels "","0000151472",..: 7041 9258 10513 5286 5759 5304 5312 5337 5337 5547 ...

$ Name       : Factor w/ 18395 levels "","  Atticus Finch",..: 1226 6754 12103 17234 2317 14034 15747 4542 4542 14819 ...

$ Center     : int  2370 2370 2370 2370 2370 2370 2370 2370 2370 2370 ...

$ Gift.Date  : Factor w/ 339 levels "","01/01/2015",..: 6 6 6 7 10 13 13 13 13 13 ...

 $ Gift.Amount: num  100 47.5 150 41 95 ...

$ Solic.     : Factor w/ 31 levels "","aa","ac","an",..: 20 31 20 29 20 8 28 8 8 8 ...

$ Tender     : Factor w/ 10 levels "","c","ca","cc",..: 3 2 3 5 2 9 3 9 9 9 ...
 $ Account    : Factor w/ 16 levels "","29101-0000",..: 4 4 4 11 2 11 2 11 2 11 ...

$ Restriction: Factor w/ 258 levels "","AAU","ACA",..: 216 59 216 1 137 1 137 1 38 1 ...

我的问题的两个相关列是MIL.ID,其中包含捐赠者的唯一ID,以及Gift.Amount,其中包含捐赠者提供的单个礼物的金额。单个MIL.ID通常与多个Gift.Amount条目相关联,这意味着捐赠者已经在多个不同的场合提供了不同的金额。这就是我想要做的事情:

  1. 我想从数据框的其余部分中分离出上述列;
  2. 我想总结(Gift.Amount),但只对每个捐赠者这样做,即我想在上面的data.frame中为MIL.ID 1234创建所有礼物的总和;和
  3. 我想根据与其ID相关联的Gift.Amount条目对所有MIL.ID进行排名。
  4. 我为这是多么基本道歉,如果对于已经问到的问题多余,我却找不到任何问题。

    编辑以发表评论:

    shot of table

        > print(ranking)
    

    Desired output

    我正在努力让这里的格式正确,所以我加入了屏幕截图

1 个答案:

答案 0 :(得分:0)

这应该这样做:

from collections.abc import Iterable # In python 2.x collections import Iterable

    class Vector:
       def __init__(self, *v):
            try:
                self.length = len(v)
            except TypeError:
                self.v = v
            else:
                 if isinstance(v, Iterable):
                     self.v = v[0] if self.length == 1 else v
                 else:
                     self.v = v