Я хотел бы накрутить настраиваемую функцию, которая использует два столбца данных, поверх кадра данных. Я вижу, как это сделать с одним столбцом данных, но не могу спорить с двумя. (Реальный фрейм данных намного больше.)
my_df <- data.frame("id"=c("151", "143", "199", "122", "156"),
"person"=c("mother", "father", "grandma", "child", "sister", "mother", "grandma", "grandma", "father", "mother","mother", "mother", "grandma", "child", "sister", "mother", "mother", "grandma", "father", "mother", "mother", "mother", "mother", "mother", "mother"))
my_new_df <- my_df %>%
group_by(id) %>% # first I subset by ID number
mutate(total = n()) # calculate the total number of observations per ID
filter(person=='mother') %>% # then I filter the observations I want to know about
mutate(n_mother = n()) %>% calculate the # of 'mother' observations per ID
mutate(prop_mother = rollapply(n_mother/total, width=1, FUN=(??)) # Here I get stuck - I want the proportion of 'mother' observations updated for every observation from this ID number
Do I write a custom function to call within the pipe?
calculate_mother = function(n_mother){
return(n_mother / total)
}
After this, I want to calculate the rolling mean and variance of prop_mother
as well, but I can't do that until I actually calculate prop_mother