R 如何创建一个新变量来排除丢失的日期值?
我正试图编写一个R代码,用于创建一个新变量,该变量将丢失的日期值从两个变量中排除,即类POSIXct/POSIXt。例如,如果“date1”和“date2”是我的两个变量,主要由日期和一些缺失值组成。我想将所有未丢失的日期值存储在一个新变量“var”中。我相信我的代码会像这样:R 如何创建一个新变量来排除丢失的日期值?,r,conditional-statements,missing-data,posixct,R,Conditional Statements,Missing Data,Posixct,我正试图编写一个R代码,用于创建一个新变量,该变量将丢失的日期值从两个变量中排除,即类POSIXct/POSIXt。例如,如果“date1”和“date2”是我的两个变量,主要由日期和一些缺失值组成。我想将所有未丢失的日期值存储在一个新变量“var”中。我相信我的代码会像这样: if date1 = 'NA' then var = date2 else var = date1 end 我很清楚if-else语句不能用于此上下文。然而,我不知道如何编写这段代码。感谢您的帮助!:) 假设您有这些
if date1 = 'NA' then
var = date2
else var = date1
end
我很清楚if-else语句不能用于此上下文。然而,我不知道如何编写这段代码。感谢您的帮助!:) 假设您有这些数据(选择包含一些潜在的边缘情况)。顺便说一句,以可复制的形式包含数据样本或类似数据是一种很好的形式。请看这里: 2)
dplyr
的如果_else
不这样做,那么您可以使用:
my_data$if_else = dplyr::if_else(is.na(my_data$date1),
my_data$date2,
my_data$date1)
3) dplyr::coalesce
是一种更简洁的方法:
my_data$coalesce = dplyr::coalesce(my_data$date1, my_data$date2)
输出
> my_data
date1 date2 ifelse if_else coalesce
1 2020-01-01 2020-01-02 2020-01-01 2020-01-01 2020-01-01
2 2020-01-01 2020-01-02 2020-01-01 2020-01-01 2020-01-01
3 2020-01-01 <NA> 2020-01-01 2020-01-01 2020-01-01
4 <NA> 2020-01-02 2020-01-02 2020-01-02 2020-01-02
5 <NA> <NA> <NA> <NA> <NA>
>我的数据
date1 date2 ifelse if_else合并
1 2020-01-01 2020-01-02 2020-01-01 2020-01-01 2020-01-01
2 2020-01-01 2020-01-02 2020-01-01 2020-01-01 2020-01-01
3 2020-01-01 2020-01-01 2020-01-01 2020-01-01
4 2020-01-02 2020-01-02 2020-01-02 2020-01-02
5.
所有这些方法都有效!非常感谢你的帮助!我一定会遵循上传可复制代码的指导原则。再次感谢你的帮助!
my_data$coalesce = dplyr::coalesce(my_data$date1, my_data$date2)
> my_data
date1 date2 ifelse if_else coalesce
1 2020-01-01 2020-01-02 2020-01-01 2020-01-01 2020-01-01
2 2020-01-01 2020-01-02 2020-01-01 2020-01-01 2020-01-01
3 2020-01-01 <NA> 2020-01-01 2020-01-01 2020-01-01
4 <NA> 2020-01-02 2020-01-02 2020-01-02 2020-01-02
5 <NA> <NA> <NA> <NA> <NA>