R: Вставить и заполнить отсутствующие точки в данных панели

Я пытаюсь изучить R из Stata, но столкнулся со следующими двумя проблемами, для которых я не могу найти элегантных решений в R:

1) У меня есть набор данных панели с пробелами в моей временной переменной. Я хотел бы расширить свою временную переменную, чтобы включить пробелы, несмотря на отсутствие наблюдаемых данных для этих строк.

В Stata я обычно делал это, устанавливая свои переменные ID и времени с помощью xtset, а затем расширяя набор данных на основе этого с помощью tsfill. Есть ли в R такой же элегантный способ?

2) Я хотел бы заполнить некоторые из новых пустых ячеек данными для постоянных переменных.

В Stata я бы сделал это, скопировав данные из предыдущих (относительно моей временной переменной) наблюдений с использованием префикса l.; например, используя replace Con = l.Con.

Другими словами, я спрашиваю, как выйти из чего-то вроде этого:

ID     Time     Num     Con
1      Jan      10      A
1      Feb      15      A
1      May      20      A
2      Feb      12      B
2      Mar      14      B
2      Jun      15      B

Примерно так:

ID     Time     Num     Con
1      Jan      10      A
1      Feb      15      A
1      Mar              A
1      Apr              A
1      May      20      A
2      Feb      12      B
2      Mar      14      B
2      Apr              B
2      May              B
2      Jun      15      B

Надеюсь, это имеет смысл. Заранее спасибо.


person ageil    schedule 03.07.2015    source источник


Ответы (1)


Вы можете попробовать merge из base R или data.table присоединиться

 library(data.table)
 DT2 <- setDT(df1)[, {tmp <- match(Time, month.abb)
      list(Time=month.abb[min(tmp):max(tmp)])}, .(ID,Con)]
 setkey(df1[, c(1,4,2,3), with=FALSE], ID, Con, Time)[DT2]
 #    ID Con Time Num
 # 1:  1   A  Jan  10
 # 2:  1   A  Feb  15
 # 3:  1   A  Mar  NA
 # 4:  1   A  Apr  NA
 # 5:  1   A  May  20
 # 6:  2   B  Feb  12
 # 7:  2   B  Mar  14
 # 8:  2   B  Apr  NA
 # 9:  2   B  May  NA
 #10:  2   B  Jun  15

ПРИМЕЧАНИЕ. Возможно, лучше оставить отсутствующее значение как NA.

person akrun    schedule 03.07.2015