Умножение элементов столбца при пропуске элемента после каждой итерации - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть фрейм данных в R с одним столбцом, как показано ниже, я хочу создать новый фрейм данных с одним столбцом, который будет иметь произведение элементов существующего столбца.

Column   result
2        2*3*4*5*8*6
3        3*4*5*8*6
4        4*5*8*6 
5        5*8*6
8        8*6
6        6

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Мы могли бы использовать accumulate

library(tidyverse)
df %>%
   mutate(y = accumulate_right(x, `*`))
#  x    y
#1 2 5760
#2 3 2880
#3 4  960
#4 5  240
#5 8   48
#6 6    6

данные

df <- data.frame(x = c(2,3,4,5,8,6))   
0 голосов
/ 12 декабря 2018

Вы также можете использовать базу R Reduce с accumulate = TRUE, т.е.

rev(Reduce(`*`, rev(df$x), accumulate = TRUE))
#[1] 5760 2880  960  240   48    6
0 голосов
/ 12 декабря 2018

Мы могли бы использовать rev и cumprod

df$y <- rev(cumprod(rev(df$x)))
df

#  x    y
#1 2 5760
#2 3 2880
#3 4  960
#4 5  240
#5 8   48
#6 6    6

data

df <- data.frame(x = c(2,3,4,5,8,6))  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...