r - 将年份添加到列中并总结 R 中的值
问题描述
我有一个如下的数据框
cust start-dt end-dt item item_type sales cost trans-dat
A 07-01-2019 07-01-2020 AA xxxxxxxxx 1500 1400 08-01-2019
A 07-01-2019 07-01-2020 AA xxxxxxxxx 2000 1600 09-01-2019
A 07-01-2019 07-01-2020 AA xxxxxxxxx 2500 1000 07-12-2019
A 07-01-2019 07-01-2020 AA xxxxxxxxx 1600 1300 05-01-2020
A 07-01-2019 07-01-2020 AA xxxxxxxxx 2400 1700 02-01-2020
A 07-01-2019 07-01-2020 AA xxxxxxxxx 2200 1300 04-01-2020
我需要转换为按年计算的数据,如下所示。基于客户和他们每年购买的物品
cust start-dt end-dt item item_type year sales cost
A 07-01-2019 07-01-2020 AA xxxxxxxxx 2019 6000 4000
A 07-01-2019 07-01-2020 AA xxxxxxxxx 2020 6200 4300
我尝试了熔化和铸造,但熔化不会创建新的列/行。
这个数据只是一个例子。我有多个客户和每个客户的多个项目,每个客户的开始和结束也不同。
请指导我如何解决这个问题。
解决方案
看起来year
结果中的来自trans-dt
列。所以你需要提取那一年并做一个分组求和。这是一个dplyr
方法:
library(dplyr)
df %>%
mutate(year = as.integer(substr(`trans-dt`, 7, 10))) %>% # chars 7 to 10 as the year
group_by(cust, `start-dt`, `end-dt`, item, item_type, year) %>%
summarize(sales = sum(sales), cost = sum(cost))
有关更多信息,请参阅按组求和的常见问题解答。
推荐阅读
- bash - 如何使用“a = 1”形式的字符串参数从 Cygwin bash 运行 Windows 批处理脚本?
- firebase - 自定义元数据的 Firebase 云存储规则
- gulp - 在 gulpfile 中解构 gulp 对象但出现错误:
- docker - 使用 GitHub Actions 为 Docker Login 设置 Docker Credential Helper
- java - 如何在 Java GUI 中动态更新更新文本?
- django - Django注释相关领域的存在
- c# - 将一个参数传递给依赖注入类的构造函数,它也将具有依赖注入参数
- logging - 如何找到 Google Cloud Platform VM 日志?
- c# - _X_AMZN_TRACE_ID 本地调试时未设置环境变量
- swiftui - 在父视图中居中自定义形状的最佳方法?