R创建时差平均值图

R create graphs of average in time difference

我有一个很大的 data.table,其中包含以下列:

timestamp, value, house

该值是例如那个房子的能量的累积值。所以这是一个小样本:

               time value house
2014-10-27 11:40:00   100     2
2014-10-27 15:40:00   150     2
2014-10-27 19:40:30   160     2
2014-10-28 00:00:01   170     2
2014-10-28 20:20:20   180     2
2014-10-27 11:40:00   200     3
2014-10-27 15:40:00   300     3
2014-10-27 19:40:30   400     3
2014-10-28 00:00:01   500     3
2014-10-28 20:20:20   600     3

我想要获得 3 个条形图:一个是一天中每个房屋的平均使用量,一个是一周中每天每个房屋的平均使用量,以及一年中每个房屋的平均使用量.

要获得一天中一小时的值,我想我应该做类似的事情

max(data$value) - min(data$value)

,但是每一个小时的时间间隔和每间房子。我知道 cut(data$time, breaks="hour") 将它按间隔拆分,但当然不会取最大值和最小值的差值,也不会考虑它来自的房子。除此之外,我当然还需要平均值。

我该怎么做?

首先,我将 time 变量拆分为小时、天、月。方便快捷的方法是使用正则表达式,例如

hour <- str_extract(rl, ' [[:digit:]]{2}')
hour <- substring(hour, 2)
day <- str_extract(rl, '-[[:digit:]]{2} ')
day <- substring(day, 2, 3)

然后我们需要处理value是累加的形式,反转cumsumdiff(均来自基数 R):

value <- diff(value)

使用 data.table 语法创建的条形图之一的汇总数据

data[ , .(avg = mean(value)), by=.(house, day)]

或者使用 aggregate(base),看起来更具可读性

aggregate(data, value ~ house + day, mean)