【问题标题】:cumulative sum by group and under some condition in r在 r 中按组和在某些条件下的累积总和
【发布时间】:2013-01-30 15:58:34
【问题描述】:

在具有相同m1n1 的组内,如果x1 不为0,我需要计算x1 的累积总和,如果y1 不为0,我需要计算y1 的累积总和。任何帮助将不胜感激。

 d <- data.frame () 
    for ( m1 in 2: 3) { 
         for (n1 in 2: 3){ 
              for (x1 in 0: m1) { 
                   for (y1 in 0: n1) {                                                                                                         

                  d<-rbind(d, c(m1, n1, x1,y1)) 
    }}}} 

所以对于m1=2n1=2x1 的总和应该是 9,y1 的总和是 9, 对于m1=2n1=3x1 的总和应该是 12,y1 的总和是 18。

【问题讨论】:

  • m1m2中包含不同值的情况应该怎么办?
  • 对于我们这些不是斯文的人来说,输入和输出是什么样的?

标签: r


【解决方案1】:

这就是你要找的吗? (使用data.table)。而且我认为您想对所有元素求和,而不是累积求和并返回所有元素。

# after running your code, I had to rename it
names(d) <- c("m1", "n1", "x1", "y1")
require(data.table)
dt <- data.table(d)
setkey(dt, m1, n1)
out <- dt[, list(s.x1=sum(x1), x.y1=sum(y1)),by="m1,n1"]
> out
#    m1 n1 s.x1 x.y1
# 1:  2  2    9    9
# 2:  2  3   12   18
# 3:  3  2   18   12
# 4:  3  3   24   24

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    相关资源
    最近更新 更多