首页 文章

R根据数据框中连续行中的日期计算日期

提问于
浏览
1

我有一个数据框,其日期列 Headers 为'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 <-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行的数据框,但我需要解决方案,我可以应用于具有大量行的数据帧 .

1 回答

  • 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")
    

相关问题