Существует ли функция R для суммирования последних 4 строк в кадре данных? - PullRequest
0 голосов
/ 20 октября 2019

Мне нужна функция типа sumproduct (excel), но только для последних 4 строк.

Я использую dplyr, и я попробовал sumproduct с rollapply, но я могу суммировать только последние 4 строки одного столбца, пока мне нужноумножьте 2 столбца на каждую строку, а затем суммируйте их по последним 4 строкам, как sumproduct из excel.

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)

1 Ответ

1 голос
/ 20 октября 2019

Умножьте столбцы вместе и затем рассчитайте скользящую сумму:

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...