数据框中最后 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))
我需要像 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))