根据 R 中的条件更改特定列值

Changing specific column values based on conditions in R

我在 R

中有以下名为 'Saty' 的数据框
One_Day Arrived_Date Departure_Date
Yes 2022-01-10 NA
No 2021-05-12 2021-06-01
Yes 2021-12-01 2021-12-01
Yes 2022-03-01 NA

我想修改dataframe,如果One_Day列的值为'Yes',我的'Arrived_Date'和'Departure_Date'应该是一样的,如下dataframe。

One_Day Arrived_Date Departure_Date
Yes 2022-01-10 2022-01-10
No 2021-05-12 2021-06-01
Yes 2021-12-01 2021-12-01
Yes 2022-03-01 2022-03-01

如何通过在 R 中编码来实现这一点?

您需要的是 ifelse 语句。

library(dplyr)

Saty %>% mutate(Departure_Date = ifelse(One_Day == "Yes", Arrived_Date, Departure_Date))

  One_Day Arrived_Date Departure_Date
1     Yes   2022-01-10     2022-01-10
2      No   2021-05-12     2021-06-01
3     Yes   2021-12-01     2021-12-01
4     Yes   2022-03-01     2022-03-01

对于显示的数据,这也适用:coalesce

尽管如此,我很确定对于您的原始数据,您将需要 @benson23+1 提供的 ifelse 语句,但这对您来说可能也很有趣:

libray(dplyr)

df %>% 
  mutate(Departure_Date = coalesce(Departure_Date, Arrived_Date))
  One_Day Arrived_Date Departure_Date
1     Yes   2022-01-10     2022-01-10
2      No   2021-05-12     2021-06-01
3     Yes   2021-12-01     2021-12-01
4     Yes   2022-03-01     2022-03-01