我有一个数据框,其中包括一个小时的连续日期和时间列(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点)之间计算差异。
答案 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
是否属于同一天,但作为一个开始你可以使用