Conditional cumulative mean for each group in R
I have a data set that looks like this: id a b 1 AA 2 1 AB 5 1 AA 1 2 AB 2 2 AB 4 3 AB 4 3 AB 3 3 AA 1 I need to calculate the cumulative mean for each record within each group and excluding the case where a == 'AA' , So sample output should be: id a b mean 1 AA 2 - 1 AB 5 5 1 AA 1 5 2 AB 2 2 2 AB 4 (4+2)/2 3 AB 4 4 3 AB 3 (4+3)/2 3 AA 1 (4+3)/2 3 AA 4 (4+3)/2 I tried to achieve it using dplyr and cummean by getting an error. df <- df %>% group_by(id) %>% mutate(mean = cummean(b[a != 'AA'])) Error: incompatible size (123), expecting 147 (the group size) or 1 Can you suggest a better way to