【问题标题】:How can I create a sum of every n numbers? [duplicate]如何创建每 n 个数字的总和? [复制]
【发布时间】:2015-07-13 18:46:04
【问题描述】:

我有一个包含此列的数据框:

1
1
1
1
2
2
2
2
3
3
3
3

我想对每 n 个数字求和(比如 4)。预期输出:

4
8
12

我该怎么做?我知道如何做rollsum,但想知道是否有任何功能可以做到这一点?

【问题讨论】:

  • 您的示例令人困惑。您可能希望每个唯一值都有sum
  • 谢谢。我不这么认为。我只是为了方便添加这些数字。 :)
  • 其他问题中的所有示例都是针对 vectors 的;因为你的已经在 data.frame 中(即声明开销已经不在了),你最好使用 data.table 解决方案:setDT(df)[,sum(v),by=.(rep(seq_len(nrow(df)%/%n),each=n))]

标签: r


【解决方案1】:
X <- data.frame(value = c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3))
X$group = rep(1:(nrow(X)/4), each=4)

tapply(X$value, X$group, FUN = sum)

这里最难的部分是分配组。有关详细信息,请参阅?rep

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2022-01-13
    • 2021-01-17
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多