У меня есть данные о клиентах (идентифицированные по идентификационному номеру), количество единиц двух продуктов, которые они купили за каждый из четырех лет, и последний столбец, в котором указывается год, в который новые клиенты впервые приобрели (столбец «ключ») ). Проблема: датафрейм содержит строки за годы, предшествовавшие новым покупкам в первый раз. Мне нужно удалить эти строки. Например, этот фрейм данных:
customer year item.A item.B key
1 1 2000 NA NA <NA>
2 1 2001 NA NA <NA>
3 1 2002 1 5 new.customer
4 1 2003 2 6 <NA>
5 2 2000 NA NA <NA>
6 2 2001 NA NA <NA>
7 2 2002 NA NA <NA>
8 2 2003 2 7 new.customer
9 3 2000 2 4 <NA>
10 3 2001 6 4 <NA>
11 3 2002 2 5 <NA>
12 3 2003 1 8 <NA>
должно выглядеть так:
customer year item.A item.B key
1 1 2002 1 5 new.customer
2 1 2003 2 6 <NA>
3 2 2003 2 7 new.customer
4 3 2000 2 4 <NA>
5 3 2001 6 4 <NA>
6 3 2002 2 5 <NA>
7 3 2003 1 8 <NA>
Я думал, что смогу сделать это, используя dplyr / tidyr - комбинацию группы, опережения / отставания и среза (или, возможно, фильтра и drop_na), но я не могу понять, как удалить назад в группе клиентов, как только я ' мы определили строки, удовлетворяющие условию «ключ» == «новый.customer». Спасибо за любые предложения (код для полного кадра данных ниже).
a<-c(1,1,1,1,2,2,2,2,3,3,3,3)
b<-c(2000,2001,2002,2003,2000,2001,2002,2003,2000,2001,2002,2003)
c<-c(NA,NA,1,2,NA,NA,NA,2,2,6,2,1)
d<-c(NA,NA,5,6,NA,NA,NA,7,4,4,5,8)
e<-c(NA,NA,"new",NA,NA,NA,NA,"new",NA,NA,NA,NA)
df <- data.frame("customer" =a, "year" = b, "C" = c, "D" = d,"key"=e)
df