2017-09-24 210 views
1

fdI'm与R一起工作,这是我的两难境地。 。r函数if else else赋值给变量

的故事的梗概是我的“M采取两个不同的时间,中间分裂时代,想创建一个分裂时代一个单独的专栏中,我已经制定出与这个公式:

burglary$midtime <- as.POSIXct((as.numeric(burglary$BegDate) + as.numeric(burglary$EndDate))/2, origin = '1970-01-01') 

打嗝不是所有的时间和结束时间,所以如果它没有和结束的时间我想填充它只是开始时间我提出了下面的if/else语句,但它只是填充该列与分隔时间并留下其他空白。

if(!is.null(burglary$EndDate)) { 
    burglary$midtime <- as.POSIXct(burglary$BegDate) 
} else { 
    burglary$midtime <- as.POSIXct((as.numeric(burglary$BegDate) +  
     as.numeric(burglary$EndDate))/2, origin = '1970-01-01') 
} 

任何想法我做错了什么?

+4

看看向量化的'ifelse'函数。 'if'函数的长度为1,而'ifelse'则是一个矢量值条件。 –

回答

0

泰勒H,谢谢你指点我在正确的方向。 ifelse的表述虽然奏效,但它将日期和时间变成数字。

我结束了使用dplyr库library(dplyr)保持日期和时间不变。最终代码如下。再次感谢您的帮助!

burglary$midTime <- if_else(!is.na(burglary$EndDate), as.POSIXct((as.numeric(burglary$BegDate) + as.numeric(burglary$EndDate))/2, origin = '1970-01-01'), as.POSIXct(burglary$BegDate))