обратное заполнение значений NA в наборе панельных данных

Я хочу знать, как я могу заполнить значения NA в наборе панельных данных.

набор данных

date    firms   return
1999      A      NA
2000      A      5
2001      A      NA
1999      B      9
2000      B      NA
2001      B      10

ожидаемый результат

date    firms   return
1999      A      5
2000      A      5
2001      A      NA
1999      B      9
2000      B      10
2001      B      10

Я использую эту формулу, чтобы заполнить значения NA предыдущим значением в наборе панельных данных.

library(dplyr)
library(tidyr)

df1<-df %>% group_by(firms) %>% fill(return)

Есть ли какой-нибудь простой способ, с помощью которого я могу заполнить значения NA следующим значением в наборе данных панели.


person Syed Riaz Mahmood Ali    schedule 25.10.2018    source источник
comment
Взгляните на функцию na.locf из пакета zoo.   -  person Nicolas2    schedule 25.10.2018
comment
Я знаю это, но это для настройки данных панели?   -  person Syed Riaz Mahmood Ali    schedule 25.10.2018
comment
Как вы думаете, что отличается или особенного в настройке данных панели? Вы можете использовать fill или zoo::na.locf. Взгляните на страницу помощи. В fill вы можете установить direction = "up" вместо direction = "down" по умолчанию. Всегда хорошо начинать со страницы справки, см. ?fill   -  person Gregor Thomas    schedule 25.10.2018
comment
посмотрите на пример ожидаемого результата. 2001 Значение NA не заполнено цифрой 9 из-за наборов панельных данных. где я поставил направление = вверх. Можете ли вы написать полный код для меня, пожалуйста.   -  person Syed Riaz Mahmood Ali    schedule 25.10.2018
comment
Спасибо большое. Я получаю тот же результат. Извините за задержку с ответом.   -  person Syed Riaz Mahmood Ali    schedule 26.10.2018


Ответы (1)


У тебя почти получилось.

df<-df %>% group_by(firms) %>% fill(return, .direction="up")
df
# A tibble: 6 x 3
# Groups:   firms [2]
   date firms return
  <int> <fct>  <int>
1  1999 A          5
2  2000 A          5
3  2001 A         NA
4  1999 B          9
5  2000 B         10
6  2001 B         10
person iod    schedule 25.10.2018
comment
Спасибо большое. Но это не работает. r не показывает никаких ошибок. Принимаем код красиво, но результат остается прежним. - person Syed Riaz Mahmood Ali; 25.10.2018
comment
Попробуйте запустить только head(df %>% group_by(firms) %>% fill(return, .direction="up"),20), не назначая его. Что вы получаете? - person iod; 25.10.2018
comment
Спасибо за ваши Коментарии. Фрейм данных больше не меняется. Извините за задержку с ответом - person Syed Riaz Mahmood Ali; 26.10.2018
comment
Можете ли вы показать свой фактический текущий df, код, который вы используете, и результат, как они есть в терминале? - person iod; 26.10.2018
comment
Извините, это работает. Что происходит, когда они не рассматривают ячейки как значения NA. Теперь это нормально. - person Syed Riaz Mahmood Ali; 26.10.2018