【发布时间】:2018-04-26 18:54:21
【问题描述】:
这是我拥有的数据示例。我有带有读取日期的列。我使用函数 as.POSIXct() 将 readdate 列转换为日期格式。
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 之间经过的时间。我使用了一个循环和
for(i in 1:nrow(data)){
tdiff=data$readdate[i+1]-data$readdate[i]}
使用这种方法的问题是 R 将时间单位四舍五入。我希望 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。
【问题讨论】:
-
你确定E行应该是40而不是50?
-
应该只是
diff操作 -c(0, diff(dat$readdate))也许? -
是的@storaged ,它是50
标签: r datetime for-loop time posix