我想在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