R中的时间计算单位
Units of time calculation in R
这是我 have.I 的数据示例 dates.I 使用函数 as.POSIXct() 将读取日期列转换为日期格式。
data$readdate=as.POSIXct(data$readdate,format="%Y-%m-%d %H:%M:%S")
ID readdate tdiff
A 2016-06-01 06:00:06 0
B 2016-06-01 06:01:06 1
C 2016-06-01 06:03:06 2
D 2016-06-01 06:04:06 1
E 2016-06-01 06:04:56 50
F 2016-06-01 08:04:56 2
我需要第三列 tdiff 来显示两个 ID 之间经过的时间's.I 使用了循环并且
for(i in 1:nrow(data)){
tdiff=data$readdate[i+1]-data$readdate[i]}
使用此方法的问题是 R 将 time.I 的单位四舍五入希望 tdiff 列由类似于此的单一类型的单位(例如秒或分钟)组成
ID readdate tdiff(seconds) or tdiff(mins)
A 2016-06-01 06:00:06 0 0
B 2016-06-01 06:01:06 60 1
C 2016-06-01 06:03:06 120 2
D 2016-06-01 06:04:06 60 1
E 2016-06-01 06:04:56 50 0.5
F 2016-06-01 08:04:56 7200 120
我需要它们都相似,因为稍后我必须提取所有 tdiff 大于 30 分钟的 ID。
我认为最简单的方法是将 difftime
与您想要的单位一起使用 c("auto", "secs", "mins", "hours", " days", "weeks")
秒使用:
difftime(data$readdate[i+1], data$readdate[i], units="secs")
这应该只是一个 diff
操作,它将调度到 diff.POSIXt
:
dif <- diff(dat$readdate)
dif
#Time differences in secs
#[1] 60 120 60 50 7200
c(0, dif)
#[1] 0 60 120 60 50 7200
如果您需要更改测量单位,只需使用 units<-
units(dif) <- "mins"
c(0, dif)
#[1] 0.0000000 1.0000000 2.0000000 1.0000000 0.8333333 120.0000000
如果你比较棘手,也可以在线执行此操作:
c(0, `units<-`(diff(dat$readdate), "mins"))
#[1] 0.0000000 1.0000000 2.0000000 1.0000000 0.8333333 120.0000000
这是我 have.I 的数据示例 dates.I 使用函数 as.POSIXct() 将读取日期列转换为日期格式。
data$readdate=as.POSIXct(data$readdate,format="%Y-%m-%d %H:%M:%S")
ID readdate tdiff
A 2016-06-01 06:00:06 0
B 2016-06-01 06:01:06 1
C 2016-06-01 06:03:06 2
D 2016-06-01 06:04:06 1
E 2016-06-01 06:04:56 50
F 2016-06-01 08:04:56 2
我需要第三列 tdiff 来显示两个 ID 之间经过的时间's.I 使用了循环并且
for(i in 1:nrow(data)){
tdiff=data$readdate[i+1]-data$readdate[i]}
使用此方法的问题是 R 将 time.I 的单位四舍五入希望 tdiff 列由类似于此的单一类型的单位(例如秒或分钟)组成
ID readdate tdiff(seconds) or tdiff(mins)
A 2016-06-01 06:00:06 0 0
B 2016-06-01 06:01:06 60 1
C 2016-06-01 06:03:06 120 2
D 2016-06-01 06:04:06 60 1
E 2016-06-01 06:04:56 50 0.5
F 2016-06-01 08:04:56 7200 120
我需要它们都相似,因为稍后我必须提取所有 tdiff 大于 30 分钟的 ID。
我认为最简单的方法是将 difftime
与您想要的单位一起使用 c("auto", "secs", "mins", "hours", " days", "weeks")
秒使用:
difftime(data$readdate[i+1], data$readdate[i], units="secs")
这应该只是一个 diff
操作,它将调度到 diff.POSIXt
:
dif <- diff(dat$readdate)
dif
#Time differences in secs
#[1] 60 120 60 50 7200
c(0, dif)
#[1] 0 60 120 60 50 7200
如果您需要更改测量单位,只需使用 units<-
units(dif) <- "mins"
c(0, dif)
#[1] 0.0000000 1.0000000 2.0000000 1.0000000 0.8333333 120.0000000
如果你比较棘手,也可以在线执行此操作:
c(0, `units<-`(diff(dat$readdate), "mins"))
#[1] 0.0000000 1.0000000 2.0000000 1.0000000 0.8333333 120.0000000