R Dataframe:根据其他2个列匹配对未定义的num列求和
Posted
技术标签:
【中文标题】R Dataframe:根据其他2个列匹配对未定义的num列求和【英文标题】:R Dataframe: Sum undefined num columns based on 2 other column matches 【发布时间】:2022-01-23 03:15:14 【问题描述】:我有一个如下所示的数据框:
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 值匹配时,我需要对所有列(CostA、CostB 等)进行求和/聚合。
当要求和的成本列已知时,我已经完成了类似的操作,方法是:
aggregate(cbind(CostA,CostB) ~ Name + Fruit, df, sum)
但是,我现在需要在不识别所有要求和的列的情况下完成。
【问题讨论】:
【参考方案1】:如果只有这些列,请使用.
指定formula
中的其余列
aggregate(.~ Name + Fruit, df, sum)
如果还有其他列,并且希望仅包含“名称”、“水果”、subset
和 select
选项之外的 cost
列
aggregate(.~ Name + Fruit,
subset(df, selct = c(Name, Fruit, startsWith(names(df), "Cost"))), sum)
【讨论】:
这似乎很有魅力。非常感谢!以上是关于R Dataframe:根据其他2个列匹配对未定义的num列求和的主要内容,如果未能解决你的问题,请参考以下文章
R语言dplyr包使用anti_join()函数返回在一个dataframe中存在而在另一个dataframe中没有匹配值的所有行实战