【问题标题】:how to take averaged diurnal for each month for two columns with ggplot2如何使用ggplot2为两列获取每个月的平均昼夜
【发布时间】:2017-07-06 11:54:57
【问题描述】:

我有一个包含两列的时间序列数据,我想要一个包含每个月平均小时模式的图表,就像附加的图表一样,但有两个时间序列。

             timestamp ET_control ET_treatment    
1  2016-01-01 00:00:00         NA           NA  
2  2016-01-01 00:30:00         NA           NA  
3  2016-01-01 01:00:00         NA           NA  
4  2016-01-01 01:30:00         NA           NA  
5  2016-01-01 02:00:00         NA           NA  
6  2016-01-01 02:30:00         NA           NA  
7  2016-01-01 03:00:00         NA           NA  
8  2016-01-01 03:30:00         NA           NA  
9  2016-01-01 04:00:00         NA           NA  
10 2016-01-01 04:30:00         NA           NA  
11 2016-01-01 05:00:00         NA           NA  
12 2016-01-01 05:30:00         NA           NA  
13 2016-01-01 06:00:00         NA           NA  
14 2016-01-01 06:30:00         NA           NA  
15 2016-01-01 07:00:00         NA           NA  
16 2016-01-01 07:30:00         NA           NA  
17 2016-01-01 08:00:00         NA           NA  
18 2016-01-01 08:30:00         NA           NA  
19 2016-01-01 09:00:00         NA           NA  
20 2016-01-01 09:30:00         NA           NA  
21 2016-01-01 10:00:00         NA           NA  
22 2016-01-01 10:30:00         NA           NA  
23 2016-01-01 11:00:00         NA           NA  
24 2016-01-01 11:30:00 0.09863437           NA  
25 2016-01-01 12:00:00 0.11465258           NA  
26 2016-01-01 12:30:00 0.12356855           NA  
27 2016-01-01 13:00:00 0.09246215  0.085398782  
28 2016-01-01 13:30:00 0.08843156  0.072877001  
29 2016-01-01 14:00:00 0.08536019  0.081885947  
30 2016-01-01 14:30:00 0.08558541           NA  
31 2016-01-01 15:00:00 0.05571436           NA  
32 2016-01-01 15:30:00 0.04087248  0.038582547  
33 2016-01-01 16:00:00 0.04233724           NA  
34 2016-01-01 16:30:00 0.02150660  0.019560578  
35 2016-01-01 17:00:00 0.01803765  0.019691155  
36 2016-01-01 17:30:00         NA  0.005190489  
37 2016-01-01 18:00:00         NA           NA  
38 2016-01-01 18:30:00         NA           NA  
39 2016-01-01 19:00:00         NA           NA  
40 2016-01-01 19:30:00         NA           NA  
41 2016-01-01 20:00:00         NA           NA  
42 2016-01-01 20:30:00         NA           NA  
43 2016-01-01 21:00:00         NA           NA  
44 2016-01-01 21:30:00         NA           NA  
45 2016-01-01 22:00:00         NA           NA  
46 2016-01-01 22:30:00         NA           NA  
47 2016-01-01 23:00:00         NA           NA  
48 2016-01-01 23:30:00         NA           NA  
49 2016-01-02 00:00:00         NA           NA  
50 2016-01-02 00:30:00         NA           NA  

【问题讨论】:

    标签: r ggplot2 time-series multiple-columns mean


    【解决方案1】:

    假设 t 是你的 data.frame,包含 dplyr 和 ggplot2 包:

    t <- t %>% mutate(
           month = format(strptime(timestamp, "%Y-%m-%d %H:%M:%S"), "%b"),
           hour=format(strptime(timestamp, "%Y-%m-%d %H:%M:%S"), "%H"))
    
    tm <- t %>% group_by(month, hour) %>% 
           summarize(ET_control_mean=mean(ET_control, na.rm=T))
    
    ggplot(tm, aes(x=hour, y=ET_control_mean)) + geom_point() + facet_wrap(~ month)
    

    如果您想在图表中同时包含两列,则应将数据转换为“长”格式。

    【讨论】:

    • 非常感谢,这段代码真的救了我。 (一个小错字在第二行的末尾 rm.na 应该是 na.rm)
    猜你喜欢
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    相关资源
    最近更新 更多