【问题标题】:How to calculate aggregate statistics on a dataframe in R by applying conditions on time values?如何通过对时间值应用条件来计算 R 中数据帧的聚合统计信息?
【发布时间】:2018-01-31 11:34:49
【问题描述】:

我正在从事气候数据分析。在 R 中加载文件后,我的兴趣是根据一天中的小时数对数据进行子集化。

对于时间分析,如果我们的兴趣是处理时间,我们可以将 $hour 与存储时间向量的变量一起使用。

我想在 365 天内对一天中每个小时的数据进行子集化,然后对全年特定小时的数据取平均值。假设我有兴趣在 12:OO PM 获取一年的辐照/风速等值,然后取这些值的平均值以获得所需的结果。

我知道如何根据条件对数据框进行子集化。例如,如果我的数据在一个名为 data 的矩阵中,并且包含 2 行表示时间和风速,并且我有兴趣对辐射 b 不为零的数据行进行子集化。我们可以使用下面的代码来做到这一点

my_data <- subset(data, data[,1]>0)

但是现在为了处理存储在数据中的变量时间列中的小时值,我如何子集值?

我的数据如下所示:

我希望我在这个问题上说得通。

提前致谢!

【问题讨论】:

    标签: r datetime dataframe grouping aggregate


    【解决方案1】:

    这是一个可能的解决方案。您可以使用format(df$time,'%H') 创建每小时分组,因此我们只获取每个时段的小时数,然后我们可以简单地按此新列分组并计算每个组的平均值。

    df = data.frame(time=seq(Sys.time(),Sys.time()+2*60*60*24,by='hour'),val=sample(seq(5),49,replace=T))
    
    library(dplyr)
    
    df %>% mutate(hour=format(df$time,'%H')) %>%
      group_by(hour) %>%
      summarize(mean_val = mean(val))
    

    要首先对非零值进行子集化,您可以执行以下任一操作:

    df = subset(df,val!=0)
    

    或使用以下命令启动 dplyr 链:

    df %>% filter(df$val!=0)
    

    希望这会有所帮助!


    df 如下所示:

                      time val
    1  2018-01-31 12:43:33   4
    2  2018-01-31 13:43:33   2
    3  2018-01-31 14:43:33   2
    4  2018-01-31 15:43:33   3
    5  2018-01-31 16:43:33   3
    6  2018-01-31 17:43:33   1
    7  2018-01-31 18:43:33   2
    8  2018-01-31 19:43:33   4
    ...    ...       ...     ...
    

    还有输出:

    # A tibble: 24 x 2
       hour  mean_val
       <chr>    <dbl>
     1 00        3.50
     2 01        3.50
     3 02        4.00
     4 03        2.50
     5 04        3.00
     6 05        2.00
     ....        ....
    

    这假设您的 time 列已经属于 POSIXct 类,否则您首先必须使用例如 as.POSIXct(x,format='%Y-%m-%d %H:%M:%S') 对其进行转换

    【讨论】:

    • 感谢您的回复。有没有使用子集()函数的方法?正如我所提到的?
    • @Jawairia,是的,我为此添加了两个可能的选项。希望有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 2018-03-10
    • 2017-12-24
    • 2021-09-24
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    相关资源
    最近更新 更多