跨多个变量求和计数

3

我觉得这应该很简单,但我却做不到。

数据是三列,第四列是我正在寻找的,但我无法显示出来:

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次销售。我不需要每行的累积总和,我需要每个组合的总和。
我尝试过使用聚合函数和ave/count的变体,但我一直遇到因因子水平不同而出现的替换问题,替换有X行,数据有X+Y行,参数必须具有相同的长度等等问题。我尝试将因子转换为字符、日期等等,但都没有成功。
另外,我需要将此作为数据框中的新变量,我不仅需要它仅在控制台中显示;dplyr非常适合这一点,但我需要它作为一个变量。
如果您能提供任何帮助,我将不胜感激,对于这个可能是初级问题的问题,我深表歉意。
谢谢!
1个回答

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))

1
我稍微编辑了答案,我需要生成sum_id_day列;那只是我想要但无法得到的示例。这两个都可以,非常感谢! - Adam_S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接