1

我想找到一堆列的累积总和,如R: ddply repeats yearly accumulate data中所述。那是,

ddply(mydf, "year", transform, 
      cumsum1 = cumsum(myvalue1), 
      cumsum2 = cumsum(myvalue2))

我尝试了以下。

解决方案1:

1.创建了累积和的目的地名称列表和源名称列表。

2.跑ddply(mydf,"year",transform,dstnList=srcList)

3.得到以下错误:

"arguments imply differing number of rows: 1385, 280
In addition: Warning message:
In eval(expr, envir, enclos) : NAs introduced by coercion"

解决方案 2:

1.创建以下函数。

findCumSum<-function(srcdf,columnlist){  
  for (i in 1:length(columnlist)){  
    ddply(srcdf,"g_id",transform,cumsum(names(srcdf)[columnlist[i]]))  
  }  
  srcdf  
}

2.调用带有srcList列表的函数。findCumSum(mydf,srcIdxList);

我收到以下错误

"Error in eval(expr, envir, enclos) : object 'srcdf' not found" 

让我知道如何解决问题。

4

1 回答 1

3

也许是这样的?

dat <- data.frame(x = rep(letters[1:2],each = 10),
                  y1 = 1:20,
                  y2 = 20:1)

> ddply(dat,.(x),colwise(cumsum))
   x  y1  y2
1  a   1  20
2  a   3  39
3  a   6  57
4  a  10  74
5  a  15  90
6  a  21 105
7  a  28 119
8  a  36 132
9  a  45 144
10 a  55 155
11 b  11  10
12 b  23  19
13 b  36  27
14 b  50  34
15 b  65  40
16 b  81  45
17 b  98  49
18 b 116  52
19 b 135  54
20 b 155  55
于 2013-08-03T03:20:04.860 回答