Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何创建一个新变量来排除丢失的日期值?_R_Conditional Statements_Missing Data_Posixct - Fatal编程技术网

R 如何创建一个新变量来排除丢失的日期值?

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语句不能用于此上下文。然而,我不知道如何编写这段代码。感谢您的帮助!:) 假设您有这些

我正试图编写一个R代码,用于创建一个新变量,该变量将丢失的日期值从两个变量中排除,即类POSIXct/POSIXt。例如,如果“date1”和“date2”是我的两个变量,主要由日期和一些缺失值组成。我想将所有未丢失的日期值存储在一个新变量“var”中。我相信我的代码会像这样:

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>