添加具有特定组合的列

时间:2019-11-18 18:45:44

标签: r dataframe dplyr filtering

我有一张桌子,例如

Example table

当Number,PetName,PetColour,OwnerName相同时,我需要总费用。 例如,如果其(123,John,Brown,George),即前两行,则前两列的总费用为37(25 + 12)。对于第三行,该数字不同于未添加到37的数字。

非常感谢!

1 个答案:

答案 0 :(得分:2)

我们可以使用ave中的base R来创建按感兴趣的列分组的总和

df1$TotalCost <- with(df1, ave(Cost, Number, PetName PetColour,
                OwnerName, FUN = sum))

或者在dplyr

library(dplyr)
df1 %>%
  group_by(Number, PetName, PetColour, OwnerName) %>%
  mutate(TotalCost = sum(Cost))