Multiplica la constante por la fila anterior y acumula el resultado en R.
Estoy tratando de calcular una nueva columna en un dataframe que multiplica una constante por el valor de la fila anterior (en la nueva columna B) y acumula el resultado.
Para aclarar, aquí está un ejemplo de mis datos originales:
A
100
200
300
400
500
Aquí está lo que intento lograr:
A B
100 100.00
200 302.00
300 608.04
400 1020.20
500 1540.60
(La constante en este caso es: 0.02)
La fórmula (aproximada) que estoy usando en Excel es algo similar a esto:
=(B1*(1+constante)+A2) [En la celda B2]
He intentado usar lag, mutate y cumsum de dplyr para lograr esto, pero hasta ahora no he tenido suerte. Aquí hay un ejemplo reproducible de lo que he logrado hasta ahora:
rate = .02
A <- c(100,200,300,400,500)
df <- data.frame(A)
df = df %>%
mutate(B = lag(A,default=0)*(1+rate)) %>%
mutate(B = cumsum(B)+df$A)
Esto produce la siguiente salida (diferente a lo que intento obtener):
A B
100 100.00
200 302.00
300 606.00
400 1012.00
500 1520.00
¿Alguien puede ayudarme con un código para calcular esto? ¡Gracias por la ayuda!
davy.ai
Para lograr el resultado deseado, la fórmula para cada fila en la columna B debería ser
(constante * valor anterior de B) + valor de A
. Aquí está el código para lograr esto usando dplyr:Esto debería producir el siguiente resultado:
Ten en cuenta que agregué una declaración
ifelse
para reemplazar el valorNA
en la primera fila con el valor inicial deA[1] * (1 + constante)
. Esto es necesario porquelag
devuelveNA
para la primera fila.