Если вы хотите, чтобы среднее значение группы заменило NA, я рассчитываю 2.83 как среднее для школы 3. Вы получаете ошибку, потому что вы используете суммирование, которое хочет свести результат к числугруппы, которые у вас есть (в данном случае 2).Я полагаю, что вы хотите, чтобы это был видоизменение.
РЕДАКТИРОВАТЬ: я загружаю библиотеки, используемые ниже, и проверяю, что используемая функция lag
происходит из пакета dplyr
.
library(dplyr)
library(tidyr)
a<-data_frame(school= c(2,2,2,2,2,3,3,3,3,3,3,3),
year=c(2011,2011,2011,2012,2012,2011,2011,2011,2012,2012,2012,2012),
numberofstudents=c(3,3,3,2,2,3,3,3,2,NA,2,4))
a %>%
group_by(school) %>%
mutate(numberofstudents = replace_na(numberofstudents, mean(numberofstudents, na.rm = TRUE)),
lag.value.ratio = dplyr::lag(school, 1)/numberofstudents) %>%
ungroup()
дает
# A tibble: 12 x 4
school year numberofstudents lag.value.ratio
<dbl> <dbl> <dbl> <dbl>
1 2 2011 3 NA
2 2 2011 3 0.667
3 2 2011 3 0.667
4 2 2012 2 1
5 2 2012 2 1
6 3 2011 3 NA
7 3 2011 3 1
8 3 2011 3 1
9 3 2012 2 1.5
10 3 2012 2.83 1.06
11 3 2012 2 1.5
12 3 2012 4 0.75