数据框中最后 4 行的 sumproduct 是否有 R 函数?

Is there an R function for sumproduct the last 4 rows in a dataframe?

我需要像 sumproduct (excel) 这样的函数,但只针对最后 4 行。

我正在使用 dplyr,我尝试了 sumproduct 和 rollapply 但我只能对一列的最后 4 行求和,而我需要将每行乘以 2 列,然后将它与最后 4 行求和,例如来自 [=18 的 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)

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

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))