У меня есть данные, которые выглядят так:
Data <- "Person Address Starting.Date Resignation.Date Job
John abc 01.01.2017 03.01.2017 IT
Sarah cde 06.01.2017 06.07.2017 Teacher
Susi bfg 09.06.2017 08.09.2017 secretary"
Data <- read.table(text=zz, header = TRUE)
Моя цель - выяснить, как долго люди остаются на своей работе, прежде чем уйти, и поместить эту информацию в новую переменную.Поэтому я проверяю, находится ли дата отставки в определенном диапазоне дат, что я делаю, используя этот код:
Data$Span<- ifelse(Data$Resignation.Date>= "01.01.2017" & Data$Resignation.Date <= "31.01.2017", 1,
ifelse(Data$Resignation.Date>= "01.02.2017" & Data$Resignation.Date <= "28.02.2017", 2,
ifelse(Data$Resignation.Date>= "01.03.2017" & Data$Resignation.Date <= "31.03.2017", 3,
ifelse(Data$Resignation.Date>= "01.04.2017" & Data$Resignation.Date <= "30.04.2017", 4,
ifelse(Data$Resignation.Date>="01.05.2017" & Data$Resignation.Date <= "31.05.2017",5,
ifelse(Data$Resignation.Date>="01.06.2017" & Data$Resignation.Date<="30.06.2017",6,
ifelse(Data$Resignation.Date>="01.07.2017" & Data$Resignation.Date<="31.07.2017",7,
ifelse(Data$Resignation.Date>="01.08.2017" & Data$Resignation.Date<="31.08.2017", 8,
ifelse(Data$Resignation.Date>="01.09.2017" & Data$Resignation.Date<="30.09.2017", 9,
ifelse(Data$Resignation.Date>="01.10.2017" & Data$Resignation.Date<="31.10.2017",10,
ifelse(Data$Resignation.Date>="01.11.2017" & Data$Resignation.Date<="30.11.2017", 11,
ifelse(Data$Resignation.Date>="01.12.2017" & Data$Resignation.Date<="31.12.2017",12,999))))))))))))
Представленные мною данные относятся к подмножеству людей, которые начали работать в январе.У меня есть подмножества на все 12 месяцев в 2017 году. Я хочу использовать один и тот же код для людей, которые начали работать в феврале / марте / и так далее.Чтобы сделать это, мне нужно изменить код, так как он начинается с первой строки и добавляет один месяц, а затем добавляет один месяц для всех последующих строк.Так, например, для подмножества февраля он будет начинаться с
Data$Resignation.Date>= "01.02.2017" & Data$Resignation.Date <= "28.02.2017.2017", 1,
и заканчиваться
ifelse(Data$Resignation.Date>="01.01.2018" & Data$Resignation.Date<="31.01.2018",12,999
. Есть ли способ сделать это без копирования кода и внесения изменений вручнуюза каждый месяц?Поскольку изменения следуют определенной систематической системе, я думаю, что это будет возможно, но я не мог найти никакого решения для этого.Я искал решения в пакете dplyr, так как думал, что моя проблема подходит, но это мне не помогло.Буду очень благодарен за любой совет.Конечно, я с радостью отвечу на оставшиеся вопросы.
PS: я не привязан к использованию подмножеств, мне было легче работать, так как я не настолько опытен в r.Я отфильтровал подмножества, используя этот код
Data <- TotalData[TotalData$Starting.Date>= "01.01.2017" & TotalData$Starting.Date <= "31.01.2017",]