我正在尝试为某个变量创建adstock效果(adstock定义为先前观察值+先前观察值* adstock率)。我有一个表格abc,有两列:GEOG(A,B,C)和GRP(1到6)共18个观测值。我想创建一个变量b,取第一个GEOG的第一个障碍物然后说出.5。然后,当我到达第二个GEOG的第一个障碍物时,将其重新初始化为GRP并再次执行。我创建了一个仅适用于一个地理位置的代码。但我无法弄清楚如何按地理位置去做。来自不同的统计语言,我仍然围绕着R的工作方式。有人可以帮忙吗?提前致谢。以下是适用于一个GOEG的代码:
this is very important content
输出:
rate1=.5
rate2=0
for (i in 1:nrow(abc)) {
if (i ==1)
abc[i,3] <- abc[i,2]
else if (i == 2)
#Effect = impression + last week effect * decay rate
abc[i,3] <- abc[i,2] + (abc[i-1,3] * rate1)
else
#Effect = impression + last week effect * decay rate
abc[i,3] <- abc[i,2] + (abc[i-1,3] * rate1) + (abc[i-2,3]*rate2)
}
答案 0 :(得分:0)
transfo <- function(df, rate1 = 0.5, rate2 = 0) {
b <- df[["a"]]
for (i in seq_along(b)) {
if (i == 2) {
b[i] <- b[i] + rate1 * b[i-1]
} else if (i > 2) {
b[i] <- b[i] + rate1 * b[i-1] + rate2 * b[i-2]
}
}
df[["b"]] <- b
df
}
abc %>%
group_by(GEOG) %>%
nest() %>%
mutate(data = map(data, transfo)) %>%
unnest(data)