0

我有一个三列的数据框。我想应用一个函数来比较第二列和第三列,我的函数将创建一个新列。举个例子:

vin <- c("vin1", "vin2", "vin3", "vin4")
date.fin.obs <- rep(as.Date("2014-07-04"), length(vin))
date.fin <- c(as.Date("2014-07-04"), as.Date("2013-03-21"), as.Date("2013-07-06"),
             as.Date("2014-07-04"))
df <- data.frame(vin, date.fin.obs, date.fin)

CumulSurvivants <- function(x, y){
#   y <- length(x)
  x.num <- as.numeric(x)
  y.num <- as.numeric(y)

#   i <- length(x)
  i <- 0
  if(x.num == y.num){
    return(i)
  }else{
    return(i+1)
  }


}

CumulSurvivants(x = df$date.fin[2], y = df$date.fin.obs[4]) 

似乎可行,但我想逐行比较两列,并将我的函数的结果写在新列中。

提前致谢!

4

1 回答 1

1

要计算日期差异,您可以简单地使用

df$difference <- date.fin.obs - date.fin

导致

   vin date.fin.obs   date.fin difference
1 vin1   2014-07-04 2014-07-04     0 days
2 vin2   2014-07-04 2013-03-21   470 days
3 vin3   2014-07-04 2013-07-06   363 days
4 vin4   2014-07-04 2014-07-04     0 days

或者,代替简单的“减号”,以相同的方式使用任何其他更专业的日期/时间函数,可能带有日期/时间格式。?strptime也看看http://www.statmethods.net/input/dates.html

于 2014-07-09T10:37:40.257 回答