【问题标题】:sum count across multiple variables跨多个变量的总和
【发布时间】:2019-04-12 12:11:53
【问题描述】:

我觉得这应该很容易,但我无法让它工作。

数据是三列,第四列是我正在寻找的我无法渲染出来的内容:

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 非常适合,但我需要它作为变量。

感谢任何帮助,抱歉这可能是一个基本问题。

谢谢!

【问题讨论】:

    标签: r group-by average summarize


    【解决方案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))
    

    【讨论】:

    • 我稍微编辑了答案,我需要生成 sum_id_day 列;这是我想要但无法得到的一个例子。这两个都有效,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2013-05-22
    • 2018-11-30
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多