我想在data.table中創建一個新列。我有兩列,一列有開始日期,另一列有結束日期。開始日期總是2016-02-28。有些情況下的結束日期爲2014-12-31,其他日期爲2020-12-31(均爲YYYY-MM-DD格式)。在sapply函數中使用ifelse語句
在第一種情況下,很明顯我應該得到日期中的負面差異。在第二種情況下,這是積極的。
我想用sapply函數和ifelse語句來確定日期的差異。任何時候,差異都是負數,我希望R用值01代替它。
我這樣做如下。
sapply(df$end.date, function(x) { ifelse(df$end.date>start_date, as.integer(length(seq(from=start_date, to=as.POSIXct(x,format="%Y-%m-%d"), by ='month'))), 1) })
不幸的是,我得到以下錯誤
Error in seq.POSIXt(from = start_date, to = as.POSIXct(df$end.date, :
'from' must be of length 1
我怎樣才能使這項工作?
PS:在data.table中,start_date和df $ end.date都是POSIXct格式。
您不在函數中使用'x'參數。 –
不,你傳遞給'sapply'的函數有一個參數'x',它在函數中沒有使用。相反,你可以使用'df'(或者''start_date'')。 –
其實,問題在於你在需要數值的'seq'函數中傳遞日期。 – Smich7