Как рассчитать соотношение с отставшими значениями на группу? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть следующий набор данных:

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))

Во-первых, я хотел изменить все значения NA на среднее значение этой переменной для этой группы.Таким образом, вместо NA должно быть 2,43.

Во-вторых, я хотел вычислить четвертую переменную, которая является отношением отстойной стоимости школы к числу учащихся.

data <- 
  a %>%
  group_by(school) %>%
  summarize(lag.value.ratio = lag(school, 1)/numberofstudents) %>% ungroup

К сожалению, у меня есть следующая ошибка: Ошибка: столбец lag.value.ratio должен иметь длину 1 (итоговое значение), а не 5. Как избежать этой ошибки и получить среднее значение группы вместо NA?

1 Ответ

0 голосов
/ 19 июня 2019

Если вы хотите, чтобы среднее значение группы заменило 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...