R创建时差平均值图

时间:2015-05-10 14:57:14

标签: r dataframe data.table

我有一个包含以下列的大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个条形图:一个是每天每小时平均每个房屋使用量的平均值,一个是每周每天每个房屋使用量的平均值,以及一年中每个房屋每月平均使用量的平均值。 / p>

要获得一天一小时的价值,我想我应该做点像

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

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

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

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

然后我们需要处理累积形式的,用 diff 反转 cumsum (都来自基础R):

value <- diff(value)

使用data.table语法

创建的一个条形图的汇总数据
data[ , .(avg = mean(value)), by=.(house, day)]

或使用看起来更具可读性的聚合(基础)

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