I wanna create a new column based on the data in column 2 - 4, conditioning if the date column is before or after the previous row. My data looks as follows:
date city1 city2 city3 2022-01-25 Paris London Berlin 2022-01-28 Paris London Berlin 2022-02-04 Paris London Berlin 2022-01-26 Paris London Berlin 2022-02-08 Paris London Berlin 2022-02-02 Paris London Berlin 2022-02-04 Paris London Berlin 2022-02-06 Paris London Berlin The expected output looks as follow:
date city1 city2 city3 NewColumn 2022-01-25 Paris London Berlin Paris 2022-01-28 Paris London Berlin Paris 2022-02-04 Paris London Berlin Paris 2022-01-26 Paris London Berlin London 2022-02-08 Paris London Berlin London 2022-02-02 Paris London Berlin Berlin 2022-02-04 Paris London Berlin Berlin 2022-02-06 Paris London Berlin Berlin This is what I have tried:
for (i in 2:4){ new_data <- data %>% mutate(NewColumn = ifelse( as.Date(date) > lag(as.Date(date)), data[,i], data[,i+1]))} But this only generates:
date city1 city2 city3 NewColumn 2022-01-25 Paris London Berlin <NA> 2022-01-28 Paris London Berlin Berlin 2022-02-04 Paris London Berlin Berlin 2022-01-26 Paris London Berlin London 2022-02-08 Paris London Berlin London 2022-02-02 Paris London Berlin Berlin 2022-02-04 Paris London Berlin Berlin 2022-02-06 Paris London Berlin Berlin How can I solve this? Any advice?
tidyr::fill(NewColumn, .direction = "up")would be a quick fix.