Я только начинаю изучать R и уже сталкиваюсь с первой большой проблемой.
Давайте возьмем следующий набор данных панели в качестве примера:
N=5
T=3
time<-rep(1:T, times=N)
id<- rep(1:N,each=T)
dummy<- c(0,0,1,1,0,0,0,1,0,0,0,1,0,1,0)
df<-as.data.frame(cbind(id, time,dummy))
id time dummy
1 1 1 0
2 1 2 0
3 1 3 1
4 2 1 1
5 2 2 0
6 2 3 0
7 3 1 0
8 3 2 1
9 3 3 0
10 4 1 0
11 4 2 0
12 4 3 1
13 5 1 0
14 5 2 1
15 5 3 0
Теперь я хочу, чтобы фиктивная переменная для всех строк сечения приняла значение 1 после того, как 1 для этого сечения появится впервые. Итак, что я хочу, это:
id time dummy
1 1 1 0
2 1 2 0
3 1 3 1
4 2 1 1
5 2 2 1
6 2 3 1
7 3 1 0
8 3 2 1
9 3 3 1
10 4 1 0
11 4 2 0
12 4 3 1
13 5 1 0
14 5 2 1
15 5 3 1
Итак, я думаю, мне нужно что-то вроде:
df_new<-df %>%
group_by(id) %>%
???
Я уже пытался установить все нули в NA и использовать функцию na.locf, но на самом деле это не сработало.
У кого-нибудь есть идея?
Спасибо!