我有一个数据框,其日期列标题为'End_Date'。我想添加一个新列'Start_Date'来计算前一个'End_Date'之后的那一天。例如:
End_Date <-as.Date(c("2010-11-01", "2010-11-18", "2010-11-26"))
dates <-data.frame(End_Date)
在此示例中,新列“开始日期”如下所示: date $ Start_Date&lt; -as.Date(c(NA,“2010-11-02”,“2010-11-19”))
我尝试过使用sapply,但是收到错误声明新列的行数太少了:
dates$Start_Date <-sapply(2:nrow(dates),
function(i) (dates$End_Date[i]-dates$End_Date[i-1]))
在这里,我创建了一个只有3行的数据框,但是我需要解决方案,我可以应用于具有大量行的数据帧。
答案 0 :(得分:0)
尝试:
dates$Start_Date<-rep(as.Date(NA,origin = "1970-01-01"),nrow(dates))
for(i in 2:nrow(dates)) {dates$Start_Date[i]<- as.Date(dates$End_Date[i-1]+1)}
正如理查德在评论中所说,一个更好的方法是:
dates$Start_Date<-as.Date(c(NA, (End_Date+1)[-length(End_Date)]), origin = "1970-01-01")