我有一个包含三列的数据框。我想应用一个函数来比较第二列和第三列,我的函数将创建一个新列。 举个例子:
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])
似乎有效,但我想逐行比较两列,并在新列中写出我的函数的结果。
提前致谢!
答案 0 :(得分: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
或者,代替简单的&#34;减去&#34;,以相同的方式使用任何其他更专业的日期/时间函数,可能使用日期/时间格式。另请查看?strptime
和http://www.statmethods.net/input/dates.html。