【发布时间】:2017-08-22 12:14:13
【问题描述】:
我正在尝试设置一个新变量,该变量包含已知日期和给定年份结束之间的差异(天数)。虚拟数据如下:
> Date.event <- as.POSIXct(c("12/2/2000","8/2/2001"), format = "%d/%m/%Y", tz = "Europe/London")
> Year = c(2000,2001)
> Dates.test <- data.frame(Date.event,Year)
> Dates.test
Date.event Year
1 2000-02-12 2000
2 2001-02-08 2001
我已经尝试应用一个函数来实现这一点,但它返回一个错误
> Time.dif.fun <- function(x) {
+ as.numeric(as.POSIXct(sprintf('31/12/%s', s= x['Year']),format = "%d/%m/%Y", tz = "Europe/London") - x['Date.event'])
+ }
> Dates.test$Time.dif <- apply(
+ Dates.test, 1, Time.dif.fun
+ )
Error in unclass(e1) - e2 : non-numeric argument to binary operator
apply() 似乎不喜欢 as.POSIXct(),因为测试仅导出年终日期的函数版本,它以 '978220800' 形式返回为数字(例如对于 end 2000 年)。有没有办法解决?对于真实数据,该函数有点复杂,包括使用不同变量的条件实例,有时还引用以前的行,如果不应用,这将很难做到。
【问题讨论】: