重复ddply为一堆列

时间:2013-08-03 02:24:04

标签: r

我想找到R: ddply repeats yearly cumulative data中解释的一堆列的累积总和。也就是说,

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

我尝试了以下内容。

解决方案1:

1.处理累积金额的目的地名称列表和源名称列表。

2.Ran 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" 

让我知道如何解决问题。

1 个答案:

答案 0 :(得分: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