首页 > 解决方案 > 将年份添加到列中并总结 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

我尝试了熔化和铸造,但熔化不会创建新的列/行。

这个数据只是一个例子。我有多个客户和每个客户的多个项目,每个客户的开始和结束也不同。

请指导我如何解决这个问题。

标签: r

解决方案


看起来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))

有关更多信息,请参阅按组求和的常见问题解答


推荐阅读