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