2016-08-12 53 views
-1

Hi和感谢的其余部分提前,集团通过日期时间做平均在列

我需要组行通过这组数据,我用进口的日期:read.table。补充一个问题是所有变量的格式为factor

Date;  Time;  Global_active_power; Global_reactive_power; Voltage 
16/12/2006; 00:00:00; 4.216;    0.418;     234.840 
16/12/2006; 00:01:00; 5.360;    0.436;     233.630 
16/12/2006; 00:02:00; 5.360;    0.436;     233.630 
..... 
17/12/2006; 00:00:00; 1.044;    0.152;     242.730 

而是按日期组我需要计算每列的mean总结在短短的一排像这样在一天中的所有记录:

Date;  Time;  Global_active_power; Global_reactive_power; Voltage 
16/12/2006; -   MEAN ALL MEASURES OF THE DAY  

做完日期后我删除了时间列,因为我只需要在一段时间内每天测量的mean

再次感谢!

+1

请格式化您的数据 – akrun

回答

0

您可以使用dplyr包假设你的数据在数据帧df做到这一点:

library(`dplyr`) 
result <- df %>% group_by(Date) %>%     ## 1. 
       select(-Time) %>%     ## 2. 
       mutate_each(funs(as.numeric)) %>% ## 3. 
       summarise_each(funs(mean))   ## 4. 

事实上,命令反映你想要完成的任务。

注:

  1. 首先group_byDate列,以便随后的平均值被计算相对于值在所有时间的日期。
  2. 然后select所有其他列除了Time列使用select(-Time)
  3. 正如您所指出的那样,要平均的数据列需要是数字而不是因子,因此必须将每个数据转换为数字。这使用mutate_eachas.numeric函数应用于选定的每个列。
  4. 最后,这些选定列的summarise_eachmean函数应用于每列。

使用你提供的数据:

print(result) 
### A tibble: 2 x 4 
##  Date Global_active_power Global_reactive_power Voltage 
##  <chr>    <dbl>     <dbl> <dbl> 
##1 16/12/2006   4.978667     0.430 234.0333 
##2 17/12/2006   1.044000     0.152 242.7300 

希望这有助于。