多个变量的总和

时间:2018-11-08 22:17:41

标签: r group-by average summarize

我觉得这应该很容易,但是我无法使其正常工作。

数据是三列,第四列是我想要的无法呈现的内容:

eg_data <- data.frame(
id = c(1,1,1,2,2,3,3,3,3,3,3,4,4,5,5,5,5),
date = c("11/1", "11/1", "11/2", "11/1", "11/5", "11/5", "11/4", "11/1", 
"11/1", "11/2", "11/4", "11/3", "11/3", "11/2", "11/3", "11/2", "11/1"),
sales = c(2,5,4,1,2,1,4,5,3,8,1,2,4,1,1,3,2),
sum_id_day = c(7,7,4,1,2,1,5,8,8,8,5,6,6,4,1,4,2))

在此示例中,对于每个ID /天组合,我需要查看总销售额。因此,对于日期为11/1的ID 1,共有7笔销售。我不需要逐行累计,每个组合都需要总计。

我已经尝试了平均值/平均值的汇总和变化,但是我一直遇到以下问题:因子级别不相同,替换具有X行,数据具有X + Y行,参数必须具有相同的长度,等等。我尝试将因子转换为字符,日期等...没有骰子。

此外,我需要将此作为数据帧中的新变量,我不需要它仅显示在控制台中; dplyr对此非常有用,但我需要将其作为变量。

感谢您的帮助,对于可能是一个基本问题,我们深表歉意。

谢谢!

1 个答案:

答案 0 :(得分:1)

按'id','date'分组后,我们可以使用mutate

library(dplyr)
eg_data <- eg_data %>%
             group_by(id, date) %>%
             mutate(TotalSum = sum(sales))

或与ave

eg_data$TotalSum = with(eg_data, ave(sales, id, date, FUN = sum))