我想根据第二到第四列的数据创建一个新列,条件是日期列是前一行之前还是之后。我的数据如下:
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
预期的输出结果如下所示:
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
这是我尝试过的内容:
for (i in 2:4){
new_data <- data %>% mutate(NewColumn = ifelse(
as.Date(date) > lag(as.Date(date)), data[,i], data[,i+1]))}
但是这只会生成:
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
我该如何解决这个问题?有什么建议吗?
tidyr::fill(NewColumn, .direction = "up")
将是一个快速的解决方法。 - Julian