【发布时间】:2017-09-05 00:21:25
【问题描述】:
免责声明:我是 R 新手,我已经寻找答案。有类似的问题,但我在将我读到的内容翻译成对我的实施有意义的东西时遇到了问题。
我正在尝试添加一个条件计时器列,它测量 sampleCondition = TRUE 的时间量。如果 Condition 返回 false,则计时器应重置。注意:我正在尝试摆脱 for 循环。我目前正在以秒为单位计算 ConditionTime,但样本可能是几分钟。 最终结果应如下所示:ConditionTime
我仍在学习,到目前为止,我为改进大型数据集所做的每一次尝试都会打破一切。 (大约 100 万行)有人可以提供示例解决方案或指出我正确的方向吗?任何帮助是极大的赞赏。 :)
#create sample DateTime
DateTime <- c("2017-09-01 09:37:04", "2017-09-01 09:38:04", "2017-09-01 09:39:04", "2017-09-01 09:40:04", "2017-09-01 09:41:04", "2017-09-01 09:42:04", "2017-09-01 09:43:04")
#create sample condition
sampleCondition <- c(0,1,0,0,1,1,0)
#create sample DF
sampleDF <- data.frame(DateTime,sampleCondition)
#calculate the time diff from data point to data point
sampleDF$rowTimeDiff <- c(0,difftime(sampleDF$DateTime[2:length(sampleDF$DateTime)], sampleDF$DateTime[1:(length(sampleDF$DateTime)-1)] , units = "secs"))
#check if condition is true (else NA), check if condition was true in the last row. ConditionTime = sum of ConditionTime[previous row] and rowTimeDiff
for (i in 1:length(sampleDF$DateTime)) {
sampleDF$ConditionTime[i] <- ifelse(sampleDF$sampleCondition[i] == 1,
ifelse(is.na(sampleDF$ConditionTime[i-1]), sampleDF$rowTimeDiff[i], sum(sampleDF$ConditionTime[i-1], sampleDF$rowTimeDiff[i]))
, NA )
i <- i + 1
}
再次感谢!
编辑:为了清晰起见,添加了更多数据以进行采样。
【问题讨论】:
标签: r datetime conditional elapsedtime