Suma acumulativa condicional y agrupación en R
Estoy tratando de crear una variable de grupo basada en la suma acumulativa de otra variable. Quiero aplicar una restricción a la suma acumulativa si supera un límite (15000000), entonces la variable de grupo debe cambiar. Aquí está el código en el que estoy trabajando:
“`{r}
myDat = data.frame(Seg = c(“A”,”B”,”C”,”D”,”F”,”G”,”H”),
Freq =c(4558848, 10926592, 15783936,8266496,7729349,13234562,9873456))
myDat$csum <- ceiling(ave(myDat$Freq,FUN=cumsum)/15000000)
Seg Freq csum
A 4558848 1
B 10926592 2
C 15783936 3
D 8266496 3
F 7729349 4
G 13234562 5
H 9873456 5
myDat1 <- aggregate(Freq~csum, data=myDat, FUN = sum)
csum Freq
1 4558848
2 10926592
3 24050432
4 7729349
5 23108018
Algunos de los grupos han superado el límite de 15000000. ¿Alguien puede ayudarme con este código?
```{r}
# Resultados deseados:
# Seg Freq csum Desired csum
# A 4558848 1 1
# B 10926592 2 2
# C 15783936 3 3
# D 8266496 3 4
# F 6229349 4 4
# G 13234562 4 5
# H 9873456 5 6
davy.ai
Para lograr los resultados deseados, necesitas agregar una condición para verificar si la suma acumulada supera el límite de 15000000. Si lo hace, entonces la variable de grupo debe ser actualizada al siguiente grupo, y la suma acumulada debe comenzar nuevamente desde cero. Aquí está el código actualizado:
Aquí está el resultado:
Como puedes ver, la variable de grupo (csum) se actualiza de acuerdo con la restricción, y también se calcula la suma acumulada deseada.