我有这样一个数据:
data<-data.frame(time=c(20230404001040, 20230404001050,20230404001100, 20230404001110, 20230404001120,20230404001130,
20230404001140,20230404001150,20230404001200),
on=c("FALSE", "FALSE", "FALSE", "TRUE","TRUE","TRUE","FALSE","FALSE","FALSE"))
'time'被写为ymd_hms表示。我想我可以使用data[,1] <- ymd_hms(data[,1])
。如果on
为FALSE,则表示开关关闭。如果on
为TRUE,则意味着交换机处于打开状态。
我想计算每个开/关事件的持续时间。time
的每行为10秒间隔。因此,我可以计算每个on/off事件中有多少行,并乘以10。所以我想要的输出应该是这样的:
data<-data.frame(time=c(20230404001040, 20230404001050,20230404001100, 20230404001110, 20230404001120,20230404001130,
20230404001140,20230404001150,20230404001200),
on=c("FALSE", "FALSE", "FALSE", "TRUE","TRUE","TRUE","FALSE","FALSE","FALSE"),
time_after_switch=c(0,10,20,0,10,20,0,10,20))
对于我的data
,前3行是关闭事件,后3行是打开事件,最后3行是关闭事件。所以我可以把它看作是三个周期。在每个循环内,持续时间为0、10、20、0、10、20、0、10、20。我想用r代码来计算time_after_switch
的值。
1条答案
按热度按时间iklwldmw1#
一种方法(使用日志条目之间的实际时间跨度):
输出: