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是累加的形式,反转cumsum和diff(均来自基数 R):
value <- diff(value)
使用 data.table 语法创建的条形图之一的汇总数据
data[ , .(avg = mean(value)), by=.(house, day)]
或者使用 aggregate(base),看起来更具可读性
aggregate(data, value ~ house + day, mean)
我有一个很大的 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是累加的形式,反转cumsum和diff(均来自基数 R):
value <- diff(value)
使用 data.table 语法创建的条形图之一的汇总数据
data[ , .(avg = mean(value)), by=.(house, day)]
或者使用 aggregate(base),看起来更具可读性
aggregate(data, value ~ house + day, mean)