根据 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
我在 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