R Dataframe:根据其他 2 个列匹配对未定义的 num 列求和

R Dataframe: Sum undefined num columns based on 2 other column matches

我有一个如下所示的数据框:

Name  Fruit    CostA  CostB
Adam  Orange   2       5
Adam  Apple    3       6
Bob   Orange   3       5
Cathy Orange   4       3
Cathy Orange   5       7

数据框创建:

df=data.frame(Name=c("Adam","Adam","Bob","Cathy","Cathy"),Fruit=c("Orange","Apple","Orange","Orange","Orange"),CostA=c(2,3,3,4,5),CostB=c(7,8,9,3,4))

此数据框将通过 CostC、CostD 等未指定数量的列增长。当 Name 和 Fruit 值匹配时,我需要 sum/aggregate 所有列(CostA、CostB 等)。

当要求和的成本列已知时,我已经完成了类似的工作,方法是:

aggregate(cbind(CostA,CostB) ~ Name + Fruit, df, sum)

但是,我现在需要在不识别要求和的所有列的情况下完成。

如果只有这些列,请使用 . 指定 formula

中的其余列
aggregate(.~ Name + Fruit, df, sum)

如果还有其他列,并且除了 'Name'、'Fruit'、subsetselect 之外,还想只包含 cost 列选项

aggregate(.~ Name + Fruit, 
    subset(df, selct = c(Name, Fruit, startsWith(names(df), "Cost"))), sum)