Изменить все значения в будущем на основе значения сегодня в R - PullRequest
0 голосов
/ 21 февраля 2020

В настоящее время я работаю с историческими, ежемесячными данными о клиентах. Мои поля включают: 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 ' Я на самом деле в тупик и не совсем уверен, где / как действовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...