0

我需要一个像 sumproduct (excel) 这样的函数,但只适用于最后 4 行。

我正在使用 dplyr,我尝试使用 rollapply 进行 sumproduct,但我只能对一列的最后 4 行求和,而我需要将每行乘以 2 列,然后将其与最后 4 行求和,例如 excel 中的 sumproduct。

x1 <- c(84,105,79,140,108,79,112,118,114,92)
x2 <- c(138,110,84,45,128,99,100,124,121,115)
df <- data.frame(x1,x2)

我期待这样的结果:

x3 <- c(NA,NA,NA,36078,38310,34581,39145,47477,47447,50206)
4

1 回答 1

1

将列相乘,然后计算滚动和:

library(zoo)

with(df, rollsumr(x1 * x2, 4, fill = NA))
## [1]    NA    NA    NA 36078 38310 34581 39145 47477 47447 50206

这也可以使用 dplyr 管道表示:

library(dplyr)
library(zoo)

df %>% 
  { x1 * x2 } %>%
  rollsumr(4, fill = NA)

或创建一个 3 列数据框,其中滚动总和作为第三列:

df %>%
  mutate(roll = rollsumr(x1 * x2, 4, fill = NA))
于 2019-10-20T02:30:42.410 回答