绘制R中的“历史平均值”

时间:2014-08-07 12:27:37

标签: r plot average

我正在尝试创建太阳能光伏电池板的平均每小时电力输入图表。我需要在视觉上将太阳能输入与设施的每小时电力负荷进行比较,但我无法确定如何创建日平均太阳能发电量图。

Year Month Day   Hour AC.Power..W.
1   1997     1   1  01:00            0
2   1997     1   1  02:00            0
3   1997     1   1  03:00            0
4   1997     1   1  04:00            0
5   1997     1   1  05:00            0
6   1997     1   1  06:00            0
7   1997     1   1  07:00            0
8   1997     1   1  08:00          378
9   1997     1   1  09:00         1145
10  1997     1   1  10:00         1822
11  1997     1   1  11:00         1520
12  1997     1   1  12:00         2639
13  1997     1   1  13:00         2465
14  1997     1   1  14:00         1401
15  1997     1   1  15:00         1716
16  1997     1   1  16:00         1949
17  1997     1   1  17:00         1142
18  1997     1   1  18:00          113
19  1997     1   1  19:00            2
20  1997     1   1  20:00            0
21  1997     1   1  21:00            0
22  1997     1   1  22:00            0
23  1997     1   1  23:00            0
24  1997     1   1  24:00            0
25  1997     1   2  01:00            0
26  1997     1   2  02:00            0
27  1997     1   2  03:00            0
28  1997     1   2  04:00            0
29  1997     1   2  05:00            0
30  1997     1   2  06:00            0
31  1997     1   2  07:00            0
32  1997     1   2  08:00          249
33  1997     1   2  09:00          887
34  1997     1   2  10:00         1758
35  1997     1   2  11:00         2171
36  1997     1   2  12:00         2584
37  1997     1   2  13:00         2017
38  1997     1   2  14:00         2435
39  1997     1   2  15:00         2259
40  1997     1   2  16:00         1382
41  1997     1   2  17:00          592
42  1997     1   2  18:00          575
43  1997     1   2  19:00            0
44  1997     1   2  20:00            0
45  1997     1   2  21:00            0
46  1997     1   2  22:00            0
47  1997     1   2  23:00            0
48  1997     1   2  24:00            0
49  1997     1   3  01:00            0
50  1997     1   3  02:00            0
51  1997     1   3  03:00            0
52  1997     1   3  04:00            0
53  1997     1   3  05:00            0
54  1997     1   3  06:00            0
55  1997     1   3  07:00            0
56  1997     1   3  08:00          134
57  1997     1   3  09:00         1114
58  1997     1   3  10:00         1394
59  1997     1   3  11:00         1721
60  1997     1   3  12:00         2301
61  1997     1   3  13:00         2703
62  1997     1   3  14:00         1933
63  1997     1   3  15:00         1781
64  1997     1   3  16:00         1231
65  1997     1   3  17:00          741
66  1997     1   3  18:00          123
67  1997     1   3  19:00            0
68  1997     1   3  20:00            0
69  1997     1   3  21:00            0
70  1997     1   3  22:00            0
71  1997     1   3  23:00            0
72  1997     1   3  24:00            0
73  1997     1   4  01:00            0
74  1997     1   4  02:00            0
75  1997     1   4  03:00            0
76  1997     1   4  04:00            0
77  1997     1   4  05:00            0
78  1997     1   4  06:00            0
79  1997     1   4  07:00            0
80  1997     1   4  08:00           82
81  1997     1   4  09:00         1008
82  1997     1   4  10:00         1611
83  1997     1   4  11:00         2305
84  1997     1   4  12:00         2727
85  1997     1   4  13:00         2224
86  1997     1   4  14:00         2623
87  1997     1   4  15:00         1202
88  1997     1   4  16:00         1555
89  1997     1   4  17:00         1025
90  1997     1   4  18:00          542
91  1997     1   4  19:00            0
92  1997     1   4  20:00            0
93  1997     1   4  21:00            0
94  1997     1   4  22:00            0
95  1997     1   4  23:00            0
96  1997     1   4  24:00            0
97  1997     1   5  01:00            0
98  1997     1   5  02:00            0
99  1997     1   5  03:00            0
100 1997     1   5  04:00            0

这是持续的,每天01:00-24:00,每天,几年。 到目前为止,我所拥有的是每一天相互叠加的图表,以便大致了解价值范围。

solardata <- read.csv("C:/Users/Simon/Documents/R/SolarPowerNakuru.csv")
plot(solardata[6049:6072,5], type="l")


dim(solardata) -> solardatadim
solardatadim[1]

n = solardatadim[1]/24
for (i in 1:n) {
  lines(solardata[((i*24+1):((i+1)*24)),5], type="l")
}

我对历史平均水平的态度&#34;图是每小时隔离一个小时,多年来每天获得该小时的交流功率值,计算每小时的平均值,然后将所有平均值绘制成单曲线。

我在隔离时间方面遇到了麻烦。     hours <- subset(solardata, Hour = 12:00, select=AC.Power..W.) 不起作用。

问题是我不能像正常值那样使用时间值:

> solardata[4,4]
[1]  04:00
24 Levels:  01:00  02:00 ...  24:00

等级是什么意思?我无法使“小时”列像普通列一样工作。我可以使用chron()来解决这个问题吗?如果是这样,怎么样?

我也想知道是否有更简单的方法。

2 个答案:

答案 0 :(得分:2)

#parse the hours
DF$numHour <- as.POSIXlt(DF$Hour, format="%H:%M", tz="GMT")$hour

#plot
library(ggplot2)
ggplot(DF, aes(x=numHour, y=AC.Power..W.)) +
  geom_line(aes(colour=paste(Year, Month, Day, sep="-"))) +
  stat_summary(fun.y=mean, geom="line", size=1)

enter image description here

研究ggplot2教程和文档,以进一步自定义绘图。

答案 1 :(得分:1)

Hour转换为数字 - 但要注意臭名昭着的因素陷阱:将Hour转换为日期/时间类 - 但要注意臭名昭着的因素陷阱:strptime(as.character(data),"%H:%M")是一个从你的因素中获取日期/时间 - 类值的方法。

我认为包lubridate也可以帮到你。然后,在您转换后,使用子集或仅使用[运算符选择具有所需小时分钟值的所有行。

ETA:如果您愿意在数字领域工作:-),您可以as.numeric(as.character(data)),其中12:00将变成1407429000&lt; - - 至少今天,2014年8月7日:-)。重点是你所有的&#34;小时&#34;将以通用方式进行转换,您可以对数值进行分组。