首页 > 解决方案 > 创建一个变量,它是相对于一周中的小时和天的价格变化的平均值

问题描述

我想计算特定日期特定小时的平均价格变化,例如星期一的 01:00-02:00。

样本数据在这里:


    Date    Time    Change  Weekday
09/03/2016  16:00   1.980786372 Wednesday
09/03/2016  17:00   0.000000000 Wednesday
10/03/2016  16:00   6.123554913 Thursday
10/03/2016  17:00   0.851063830 Thursday
11/03/2016  10:00   0.000000000 Friday
11/03/2016  17:00   0.000000000 Friday
12/03/2016  02:00   1.924686192 Saturday
12/03/2016  03:00   4.448267388 Saturday
13/03/2016  00:00   2.973977695 Sunday
13/03/2016  23:00   -2.587601078    Sunday
14/03/2016  09:00   -1.132075472    Monday
14/03/2016  17:00   0.870827286 Monday
14/03/2016  18:00   6.057553957 Monday
15/03/2016  00:00   1.964415103 Tuesday
15/03/2016  01:00   0.493198632 Tuesday
15/03/2016  10:00   0.023116043 Tuesday
15/03/2016  11:00   0.145716696 Tuesday
16/03/2016  09:00   2.426487263 Wednesday
16/03/2016  10:00   1.609434102 Wednesday

不确定如何同时获得一周中的小时和一天的平均值?

标签: r

解决方案


你可以试试:

library(dplyr)
dfn %>% group_by(Weekday,Time) %>% summarise(Avg=mean(Change,na.rm=T))

# A tibble: 19 x 3
# Groups:   Weekday [7]
   Weekday   Time      Avg
   <chr>     <chr>   <dbl>
 1 Friday    10:00  0     
 2 Friday    17:00  0     
 3 Monday    09:00 -1.13  
 4 Monday    17:00  0.871 
 5 Monday    18:00  6.06  
 6 Saturday  02:00  1.92  
 7 Saturday  03:00  4.45  
 8 Sunday    00:00  2.97  
 9 Sunday    23:00 -2.59  
10 Thursday  16:00  6.12  
11 Thursday  17:00  0.851 
12 Tuesday   00:00  1.96  
13 Tuesday   01:00  0.493 
14 Tuesday   10:00  0.0231
15 Tuesday   11:00  0.146 
16 Wednesday 09:00  2.43  
17 Wednesday 10:00  1.61  
18 Wednesday 16:00  1.98  
19 Wednesday 17:00  0     

#Data
dfn <- structure(list(Date = c("09/03/2016", "09/03/2016", "10/03/2016", 
"10/03/2016", "11/03/2016", "11/03/2016", "12/03/2016", "12/03/2016", 
"13/03/2016", "13/03/2016", "14/03/2016", "14/03/2016", "14/03/2016", 
"15/03/2016", "15/03/2016", "15/03/2016", "15/03/2016", "16/03/2016", 
"16/03/2016"), Time = c("16:00", "17:00", "16:00", "17:00", "10:00", 
"17:00", "02:00", "03:00", "00:00", "23:00", "09:00", "17:00", 
"18:00", "00:00", "01:00", "10:00", "11:00", "09:00", "10:00"
), Change = c(1.980786372, 0, 6.123554913, 0.85106383, 0, 0, 
1.924686192, 4.448267388, 2.973977695, -2.587601078, -1.132075472, 
0.870827286, 6.057553957, 1.964415103, 0.493198632, 0.023116043, 
0.145716696, 2.426487263, 1.609434102), Weekday = c("Wednesday", 
"Wednesday", "Thursday", "Thursday", "Friday", "Friday", "Saturday", 
"Saturday", "Sunday", "Sunday", "Monday", "Monday", "Monday", 
"Tuesday", "Tuesday", "Tuesday", "Tuesday", "Wednesday", "Wednesday"
)), class = "data.frame", row.names = c(NA, -19L))

推荐阅读