2016-08-12 48 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 

希望這有助於。