2017-09-24 50 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))