r - Cumulatively apply function in dplyr -
consider following data:
df <- data.frame(names = sample(letters[1:5], 20, replace = t), numbers = 1:20)
for have function cumsum
, such each row in group, computes cumulative sum of numbers row
library(dplyr) df %>% group_by(names) %>% mutate(cumsum_numbers = cumsum(numbers))
i wish apply general function my_fn
cumulatively in same manner cumsum
. my_fn
has general form:
my_fn <- function(vector){ # stuff vector return(x) # x numeric scalar }
that is, takes vector of previous values row, , returns scalar.
the following code not work:
df %>% group_by(names) %>% mutate(cumsum_numbers = my_fn(numbers)) # apply my_fn # each group in numbers, returning # same value each grouping level
so guess want like:
df %>% group_by(names) %>% mutate(cumsum_numbers = cum_my_fn(numbers))
note example function mean
calculating cumulative mean. interestingly dplyr
has implemented cummean
, don't know internal workings of can't work out how implement behaviour general function.
Comments
Post a Comment