我正在减去日期.在以下示例中
bb
FECHA_EFECTO_ESTADO FECHA_ANIVERSARIO_POLIZA
9 2015-11-05 09:49:00 2015-11-05
10 2015-11-05 09:51:00 2015-11-04
Run Code Online (Sandbox Code Playgroud)
列是posixct日期值.要创建一个新变量,这是我可以使用的其他变量的差异:
library (dplyr)
bb<-aa<-mutate(bb, day1=abs(FECHA_EFECTO_ESTADO-FECHA_ANIVERSARIO_POLIZA))
bb
FECHA_EFECTO_ESTADO FECHA_ANIVERSARIO_POLIZA day1
1 2015-11-05 09:49:00 2015-11-05 9.816667 hours
2 2015-11-05 09:51:00 2015-11-04 33.850000 hours
Run Code Online (Sandbox Code Playgroud)
默认情况下,day1变量的单位(天,小时,秒)取决于差异的大小.如果我想在几天内有所不同,我可以这样做:
bb<-mutate(bb, day2=abs (difftime(FECHA_EFECTO_ESTADO, FECHA_ANIVERSARIO_POLIZA, units="days" )))
bb
FECHA_EFECTO_ESTADO FECHA_ANIVERSARIO_POLIZA day1 day2
1 2015-11-05 09:49:00 2015-11-05 9.816667 hours 0.4090278 days
2 2015-11-05 09:51:00 2015-11-04 33.850000 hours 1.4104167 days
Run Code Online (Sandbox Code Playgroud)
有没有办法在计算后指定单位(在这种情况下是天数)?我可能会在分析中进一步发现,我宁愿在数小时内有所不同,所以:
我如何才能更改day1或day2列的单位?
谢谢
rba*_*att 17
返回的difftime是"difftime"类的对象.
其他功能有difftime的方法.例如,要转换为小时数,请将其作为数字:
as.numeric(difftime("2015-12-07", "2015-12-05"), units="hours")
Run Code Online (Sandbox Code Playgroud)
[1] 48
或者,要获得几周:
as.numeric(difftime("2015-12-07", "2015-12-05"), units="weeks")
Run Code Online (Sandbox Code Playgroud)
[1] 0.2857143
此外,您可能会发现记住POSIXct对象实际上是数字很有用!它们表示自此以来经过的秒数‘1970-01-01 00:00.00 UTC’(假设格里高利历).
结果,通常可以方便地考虑固定持续时间的单位时间(即,不是"月",这不是恒定的),并使用它进行计算.例如,一旦您的时差以秒为单位,就可以转换为其他常数(技术上有一些非常精细的比例变化,但大多数应用程序不需要注意这些细节)时间单位,如分钟,小时,天或者几个星期.
现在,感谢@rbatt,我意识到,在我的示例中,要更改变量 day1 的单位,我可以这样做 bb$day1<- as.numeric(bb$day1, units="days")
这会将单位更改为天:
FECHA_EFECTO_ESTADO FECHA_ANIVERSARIO_POLIZA day1 day2
9 2015-11-05 09:49:00 2015-11-05 9.816667 hours 0.4090278 days
10 2015-11-05 09:51:00 2015-11-04 33.850000 hours 1.4104167 days
bb$day1<- as.numeric(bb$day1, units="days")
bb
FECHA_EFECTO_ESTADO FECHA_ANIVERSARIO_POLIZA day1 day2
9 2015-11-05 09:49:00 2015-11-05 0.4090278 0.4090278 days
10 2015-11-05 09:51:00 2015-11-04 1.4104167 1.4104167 days
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13161 次 |
| 最近记录: |