【问题标题】:Group dates by time doing the mean in the rest of the columns按时间分组日期,在其余列中取平均值
【发布时间】:2016-08-12 13:29:54
【问题描述】:

您好,在此先感谢您,

我需要按我已导入的此数据集的日期对行进行分组: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

再次感谢!

【问题讨论】:

    标签: r date datetime mean


    【解决方案1】:

    假设您的数据位于数据框df 中,您可以使用dplyr 包执行此操作:

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

    事实上,这些命令反映了你想要完成的事情。

    注意事项:

    1. 首先 group_by Date 列,以便根据该日期所有时间的值计算后续平均值。
    2. 然后select所有其他列除了对于Time列使用select(-Time)
    3. 正如您所指出的,要平均的数据列需要是数字而不是因子,因此根据需要将每个列转换为数字。这使用mutate_eachas.numeric 函数应用于所选的每一列。
    4. 最后,summarise_each 这些选定的列将mean 函数应用于每一列。

    使用您提供的数据:

    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
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 2021-07-09
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      相关资源
      最近更新 更多