R中两个给定时间之间的数据值的差异

时间:2015-05-13 14:50:46

标签: r time difference

我有一个数据框,其中包括一个小时的连续日期和时间列(A列)和几个带测量值的参数列(例如B列到Z列)。

我的问题是,如果我想计算一个参数在特定时间段(例如早上6点到前一天晚上8点)之间B列中值的差异,我该如何编写代码?

使用一些随机数的示例测试数据:

hour <- seq(as.POSIXct("2014/01/01 00:00:00",tz="EST"), as.POSIXct("2014/3/31 23:00:00",tz="EST"), by="hour")
PM <- runif(2160, 0, 50)
NO <- runif (2160, 0, 200)
test <- data.frame(hour,PM,NO)

如何计算第二天早上6点到前一天晚上8点的每晚PM的差异?所以它实际上并没有在同一天计算差异,而是在第2天(早上6点)和第1天(晚上8点)之间计算差异。

2 个答案:

答案 0 :(得分:0)

您正在为哪个系统寻找解决方案?

对于T-SQL,它可能类似于:

SELECT MAX(ColumnB)-MIN(ColumnB) AS Column_B_Diff 
FROM Data_table 
WHERE Date >= '2011/02/25 20:00:00.000' and Date <= '2011/02/26 06:00:00.000'

这不是针对语法测试的,但可以指向正确的方向。

答案 1 :(得分:0)

由于时间不够,有点笨拙的解决方案。如果您确定每天早上6点和晚上8点都有一个条目,您可以使用子集:

hour <- seq(as.POSIXct("2014/01/01 00:00:00",tz="EST"), as.POSIXct("2014/3/31 23:00:00",tz="EST"), by="hour")
PM <- runif(2160, 0, 50)
NO <- runif (2160, 0, 200)
test <- data.frame(hour,PM,NO)
test6 = subset(test,grepl("06:00:00",test$hour) == T)
test8 = subset(test,grepl("20:00:00",test$hour) == T)
diffPM = test8$PM - test6$PM

当然,有很多更好的解决方案可以检查差异中的PM是否属于同一天,但作为一个开始你可以使用