使用带有多个,累积和滞后参数的函数生成的Data.table列

时间:2016-02-22 00:15:56

标签: r data.table dplyr lag rollapply

我正在尝试向data.table添加一个列,其中data.table的列通过将每个组的累积(滞后1)值向量以及组级属性传递给a来填充函数,然后返回适当的值。

我有8M行,每个代理日一个。我的函数比myfun更复杂,但关键是它需要来自agent-day表的两个参数:特定代理之前所有日期的特定代理的值的向量(Vector),以及代理向量-level属性(PerAgent),每个代理都是相同的。

library(data.table)
library(dplyr)
library(zoo)

DT <- data.table(Agent=LETTERS[1:3],day=c(1,1,1,2,2,2,3,3,3), PerAgent=c(.2,.4,.6),Vector=1:9,Answer=c(NA,NA,NA,.2,.8,1.8,1,2.8,5.4))

myFun = function(Vector,PerAgent){
PerAgent=PerAgent[1]
Answer=PerAgent*sum(Vector)
return(Answer)
}

我正在尝试生成“答案”栏目(显然不像我在这里那样手动完成)。

我现在所做的不行,因为我试图传递第二个参数是:

DT[,Answer:=lag(rollapplyr(Vector,PerAgent,seq_along(Vector),myFun),1),by=.(Agent)]

如果我不需要将第二个参数传递给(简化)函数,则可以正常工作:

myFun = function(Vector){
Answer=.1*sum(Vector)
return(Answer)
}

DT[,Answer:=lag(rollapplyr(Vector,seq_along(Vector),myFun),1),by=.(Agent)]

非常感谢您的帮助。

0 个答案:

没有答案