R Shift несколько строк при условии - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть датафрейм с данными ниже. Я хочу сместить строки с помощью R, чтобы ни одно из заданий не началось в выходные дни. Я знаю, как сделать простой сдвиг всех строк, но я не уверен, как это сделать в R, потому что для продолжения сдвига строк потребуется некоторая рекурсия, поскольку первая смена может привести к запуску задания в выходные дни. , где раньше не было. Любые предложения?

Day of Week   Date          Job     Job Start
Sunday        12/1/19       Job1    12/1/19
Monday        12/2/19       Job1    12/1/19
Tuesday       12/3/19       Job2    12/3/19
Wednesday     12/4/19       Job2    12/3/19
Thursday      12/5/19       Job2    12/3/19
Friday        12/6/19       Job3    12/6/19
Saturday      12/7/19       Job3    12/6/19
Sunday        12/8/19       NA      NA
Monday        12/9/19       NA      NA
Tuesday       12/10/19      NA      NA

Вот результат таблицы, который я ищу.

Day of Week     Date        Job      Job Start
Sunday          12/1/19     NA       NA
Monday          12/2/19     Job1    12/2/19
Tuesday         12/3/19     Job1    12/2/19
Wednesday       12/4/19     Job2    12/4/19
Thursday        12/5/19     Job2    12/4/19
Friday          12/6/19     Job2    12/4/19
Saturday        12/7/19     NA      NA
Sunday          12/8/19     NA      NA
Monday          12/9/19     Job3    12/9/19
Tuesday         12/10/19    Job3    12/9/19

1 Ответ

0 голосов
/ 05 февраля 2020

Пожалуйста, добавьте воспроизводимый минимальный пример. Проверьте здесь , чтобы увидеть, как сделать минимальный воспроизводимый пример.

Без этого нам трудно вам помочь. Но я все равно попробую;)

data$Job_Start <- as.Date(data$Job_Start, "%d/%m/%y")
data$New_Job_Start <- ifelse(data$Day_of_Week %in% "Saturday", data$Job_Start + 2, data$Job_Start)
data$Day_of_Week <- ifelse(data$Day_of_Week %in% "Saturday", "Monday", data$Day_of_Week)
data$New_Job_Start <- ifelse(data$Day_of_Week %in% "Sunday", data$Job_Start + 1, data$Job_Start)
data$Day_of_Week <- ifelse(data$Day_of_Week %in% "Sunday", "Monday", data$Day_of_Week)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...