Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
使用if-else语句R创建新字段_R - Fatal编程技术网

使用if-else语句R创建新字段

使用if-else语句R创建新字段,r,R,我正在尝试根据if-else语句创建一个新字段。基本上,我有一个“日期”字段和一个“估计日期”字段。我想创建一个新字段,用于计算单个事件与日期或估计日期字段(如果日期为NA)之间的差值(天): 对于最后一行,我希望事件_to_death有一个计算,因为DOD是NA,DOD.est不是NA。我做错了什么?谢谢。您可以尝试使用矢量化的ifelse()。函数if()适用于单个值,在处理变量时可能会出现问题。在这种情况下,最好使用ifelse。以下代码是供您选择的选项: #Code data$event

我正在尝试根据if-else语句创建一个新字段。基本上,我有一个“日期”字段和一个“估计日期”字段。我想创建一个新字段,用于计算单个事件与日期或估计日期字段(如果日期为NA)之间的差值(天):


对于最后一行,我希望事件_to_death有一个计算,因为DOD是NA,DOD.est不是NA。我做错了什么?谢谢。

您可以尝试使用矢量化的
ifelse()
。函数
if()
适用于单个值,在处理变量时可能会出现问题。在这种情况下,最好使用
ifelse
。以下代码是供您选择的选项:

#Code
data$event_to_death <- ifelse(!is.na(data$DOD),as.numeric(data$DOD - data$eventDate),
                              ifelse(is.na(data$DOD) & !is.na(data$DOD.est),
                                     as.numeric(data$DOD.est - data$eventDate),NA))
输出:

data
         DOD    DOD.est  event  eventDate event_to_death
1 2020-11-09       <NA> Thing1 2019-02-19            629
2 2020-01-01       <NA> Thing2 2017-08-09            875
3 2020-11-19       <NA> Thing3       <NA>             NA
4       <NA> 2020-02-09 Thing4 2019-12-09             62
data
         DOD    DOD.est  event  eventDate event_to_death
1 2020-11-09       <NA> Thing1 2019-02-19            629
2 2020-01-01       <NA> Thing2 2017-08-09            875
3 2020-11-19       <NA> Thing3       <NA>             NA
4       <NA> 2020-02-09 Thing4 2019-12-09             62
数据
国防部最新事件事件日期事件至死亡
1 2020-11-09事情1 2019-02-19 629
2 2020-01-01事项2 2017-08-09 875
3 2020-11-19事件3 NA
4 2020-02-09事情4 2019-12-09 62

通过这种方式,条件由每个值计算,并且
if()
工作正常。

您可以尝试使用向量化的
ifelse()
。函数
if()
适用于单个值,在处理变量时可能会出现问题。在这种情况下,最好使用
ifelse
。以下代码是供您选择的选项:

#Code
data$event_to_death <- ifelse(!is.na(data$DOD),as.numeric(data$DOD - data$eventDate),
                              ifelse(is.na(data$DOD) & !is.na(data$DOD.est),
                                     as.numeric(data$DOD.est - data$eventDate),NA))
输出:

data
         DOD    DOD.est  event  eventDate event_to_death
1 2020-11-09       <NA> Thing1 2019-02-19            629
2 2020-01-01       <NA> Thing2 2017-08-09            875
3 2020-11-19       <NA> Thing3       <NA>             NA
4       <NA> 2020-02-09 Thing4 2019-12-09             62
data
         DOD    DOD.est  event  eventDate event_to_death
1 2020-11-09       <NA> Thing1 2019-02-19            629
2 2020-01-01       <NA> Thing2 2017-08-09            875
3 2020-11-19       <NA> Thing3       <NA>             NA
4       <NA> 2020-02-09 Thing4 2019-12-09             62
数据
国防部最新事件事件日期事件至死亡
1 2020-11-09事情1 2019-02-19 629
2 2020-01-01事项2 2017-08-09 875
3 2020-11-19事件3 NA
4 2020-02-09事情4 2019-12-09 62

这样,每个值都会对条件进行评估,
if()
工作正常。

谢谢,我会尝试。但是,为什么它不能与if-else语句一起工作呢?@DiamondJoe12这是因为
if
在单个值级别工作。我将添加一个如何开始工作你的代码sketch@DiamondJoe12我添加了一个更新,解释了代码发生了什么,以及如何让它工作。让我知道这是否有效,如果它是明确的!谢谢现在工作!谢谢,我会试试的。但是,为什么它不能与if-else语句一起工作呢?@DiamondJoe12这是因为
if
在单个值级别工作。我将添加一个如何开始工作你的代码sketch@DiamondJoe12我添加了一个更新,解释了代码发生了什么,以及如何让它工作。让我知道这是否有效,如果它是明确的!谢谢现在工作!