r - R Dataframe:当其他两个值匹配时组合行/值
问题描述
我有一个看起来像这样的数据框:
Name Fruit Cost
Adam Orange 2
Adam Apple 3
Bob Orange 3
Cathy Orange 4
Cathy Orange 5
数据框创建:
df=data.frame(Name=c("Adam","Adam","Bob","Cathy","Cathy"),Fruit=c("Orange","Apple","Orange","Orange","Orange"),Cost=c(2,3,3,4,5))
我想编写一个组合脚本,当名称和水果匹配时,添加成本并删除另一行。例如,结果将如下所示,因为名称和水果相同,所以合并了两个 Cathy 成本:
Name Fruit Cost
Adam Orange 2
Adam Apple 3
Bob Orange 3
Cathy Orange 9
我正在考虑编写一个 for 循环来逐行比较,逐个值,比较并添加然后删除。但我必须想象有一种更快/更清洁的方式。
解决方案
你想要做的是Cost
在一个组内求和。
在基础 R 中:
aggregate(Cost ~ Name + Fruit, df, sum)
或使用dplyr
:
library(dplyr)
df %>%
group_by(Name, Fruit) %>%
summarize(Cost = sum(Cost), .groups = "drop")
推荐阅读
- ios - 如何下载 On Demand 框架/SDK?
- flutter - Flutter:如何在 10 分钟后在已经有一些小部件的列中添加小部件
- apache - 如何重定向到 404 但使用 .htaccess 在地址栏上保留错误的 URL
- c++ - 抽象基类指针能否调用未覆盖的派生类函数?
- node.js - Node.js sequelize 创建对象虽然关联失败
- oracle - ORA-14450 GTT 更改表问题
- python - 如何拆分没有分隔符的多行句子('.','?','!')?
- c# - 在c#中将两组添加到一组中
- java - 相对布局不使用片段路由到其他屏幕
- java - 如何使数组函数返回一个值