聚合一列,同时保留另一列的ID

时间:2015-09-08 15:58:04

标签: r aggregate plyr

我仍然是R的新手,并且有一个如下所示的数据框:

    > head(df)
           UniqueID                   Disbursements  Year
    1 NL-KVK-41160054-100530              303742     2010
    2 NL-KVK-41160054-100530              289829     2010
    3 NL-KVK-41160054-100530              577072     2010
    4 NL-KVK-41160054-100530              340292     2010
    5 NL-KVK-41160054-100530              555826     2011
    6 NL-KVK-41160054-100530              713332     2011
    > tail(df)
            UniqueID                    Disbursements      Year
    3041 NL-KVK-41160054-317/10481              200000     2009
    3042 NL-KVK-41160054-317/10481              284500     2010
    3043 NL-KVK-41160054-317/10481              737659     2010
    3044 NL-KVK-41160054-317/10481              405664     2011
    3045 NL-KVK-41160054-317/10481               10572     2012
    3046 NL-KVK-41160054-317/10481              114035     2013

我试图按年度汇总所有支出,但在每个UniqueID内,重复有多年的UniqueId。这样我的结果数据框将如下所示:

         UniqueID                    Disbursements    Year
     NL-KVK-41160054-100530              1510935     2010
     NL-KVK-41160054-100530              769158      2011
     ...
            UniqueID                 Disbursements     Year
     NL-KVK-41160054-317/10481              200000     2009
     NL-KVK-41160054-317/10481              1022159    2010
     NL-KVK-41160054-317/10481              405664     2011
     NL-KVK-41160054-317/10481               10572     2012
     NL-KVK-41160054-317/10481              114035     2013

根据我如何提取这些数据并将其纳入此数据框,应该没有任何NA可以应对。

我尝试过使用聚合: amt_by_year <- aggregate(Disbursements~UniqueID+Year, df, FUN=sum) 但是这引发了Error in model.frame.default(formula = Disbursements ~ UniqueID + Year, : variable lengths differ (found for 'Year')我猜错的错误,因为它假设在UniqueId和Year中会有相同数量的唯一值。

我还试过ddply amt_by_year <-ddply(NEWerDF,.(DateYear,UniqueID),summarise, Disbursements = sum(as.numeric(Disbursements)))并且因强制引入的NAs而犯了更多错误。

我觉得我缺少一些基本的东西,因为这肯定不是第一次有人遇到这个问题。但是我搜索了stackoverflow并且只发现了提问者希望总计相当于ID和支出的实例,或者只有两列或者其他东西的情况,所以如果之前已经提出过这样的话,请道歉。

提前致谢!

0 个答案:

没有答案