У меня есть data.frame, который выглядит следующим образом:
GROUP | YEAR | VAL
A | 2007 | 10
A | 2007 | 11
A | 2007 | NA
A | 2008 | 13
B | 2006 | NA
B | 2006 | 5
B | 2006 | 6
Так что у каждой группы могут быть разные годы. Я хочу заменить эти NA средним значением соответствующей группы в соответствующем году. Например, для NA в строке 3 он будет заменен средним значением группы A в 2007 году.
Я могу сделать это с помощью цикла for, но, к сожалению, мой профессор ненавидит «за»петля, поэтому я пытаюсь найти другой путь. Я попытался использовать функцию, подобную этой: imputeMean(group,year)
, для вычисления среднего значения требуется группа и год, а затем мутирует data.frame. Затем я применяю эту функцию к data.frame группы и года, подлежащего замене.
К сожалению, R не имеет передачи по ссылке, что означает, что я не могу изменить исходный data.frame непосредственно вфункция imputeMean()
. В любом случае можно рассчитать фильтр для data.frame, рассчитать среднее по группе относительно года и заменить значение NA на это среднее без использования цикла?