В настоящее время я работаю с историческими, ежемесячными данными о клиентах. Мои поля включают: CustomerName , OpenDate, ClosedDate , ProcessDate и ProdNum . Эти данные отслеживают тип продукта клиента на ежемесячном уровне. OpenDate - это исходная дата открытия счета, ClosedDate , если клиент закрыл учетную запись, в противном случае - ноль, ProcessDate - это ежемесячное последующее число дат для account (думаю, временные ряды, январь 2014 г., февраль 2014 г., март 2014 г., et c) и ProdNum - это номер идентификатора, присвоенный продукту.
Проблема если клиент меняет тип продукта в какой-либо конкретный месяц, единственным изменяемым полем является ProdNum. Мне также нужно изменить OpenDate и ClosedDate.
Пример
df<-data.frame(CustName=c("Jim","Jim","Jim","Jim","Jim","Jim","Jim","Jim","Jim"),
OpenDate=seq(as.Date('2009-12-10'),by=0,length.out = 9),
ClosedDate=seq(is.na(.),by=0,length.out = 9),
PrcsDate=seq(as.Date('2010-01-01'),as.Date('2010-09-01'),by="months"),
ProdNum=c('12','12','12','12','12','12','22','22','22'),
Lagging=c("","12","12","12","12","12","12","22","22"),
Leading=c("12","12","12","12","12","22","22","22",""),
NewOpen=c('2009-12-10','2009-12-10','2009-12-10','2009-12-10','2009-12-10','2009-12-10','2010-07-01','2009-12-10','2009-12-10'),
NewClosed=c('','','','','','2010-06-01','','',''))
Моя первая попытка - это простое выражение if_else:
df$NewOpen<-if_else(df$Lagging==df$ProdNum,df$OpenDate,df$ProcessDate)
df$NewClosed<-if_else(df$Lead==df$ProdNum,df$ClosedDate,df$ProcessDate)
Это на самом деле слова для указанной строки c, которую он просматривает, но мне нужен код, где он будет применять эти даты NewOpen и NewClosed ко всем строкам t + 1, где t - месяц.
I ' Я на самом деле в тупик и не совсем уверен, где / как действовать.