将10分钟间隔数据转换为每小时平均值

时间:2014-03-27 17:08:26

标签: r excel excel-vba time-series vba

我有一个excel文件(.xlsx),其中包含三列,包含标题:' datetime'(例如:10/1/2008 0:10,10 / 01/2008 0:20等) ,' RH'(例如:0.46)和' wind_mps'(例如:3.71)。我希望将10分钟间隔数据转换为RH和wind_mps列的每小时平均数据。

我无法将Excel数据插入此问题。对于那个很抱歉。如果有人告诉我怎么做,我可以编辑我的问题。

how to convert by the minute data to hourly average data in R已经回答了类似的问题,但我是R的新手并且无法对我的数据使用相同的技术。我也尝试过使用动物园' chron'和' xts'用于执行此操作的包,如http://rpubs.com/hrbrmstr/time-series-machinations中所示,但它们似乎在R 3.02中不起作用。

我尝试在Excel中执行此操作,但无法找到相当简单的技术。

我能够实现类似的任务,即使用Excel宏将每小时数据转换为另一个数据集的每日平均值,但我无法对10分钟数据执行此操作。宏如下:

Global year As Integer
Sub Calculate()
    Dim start_year As Integer
    Dim end_year As Integer
    Dim cell_count As Integer
    start_year = Cells(19, "M").Value
    end_year = Cells(48, "M").Value
    year = start_year
    cell_count = 19
    Do While year < (end_year + 1)
        Dim row As Integer
        Dim sum As Double
        Dim count As Integer
        Dim init_row As Integer
        init_row = 6
        sum = 0
        count = 0
        Dim cv As Integer
        cv = 3
        Do Until cv = year
            cv = Cells(init_row, "C").Value
            init_row = init_row + 1
        Loop
        row = init_row - 1
        Worksheets("Sheet1").Activate
        Dim cv1 As Integer
        cv1 = Cells(row, "C").Value
        Do While cv1 = year
            sum = sum + Cells(row, "F").Value
            count = count + 1
            row = row + 1
            cv1 = Cells(row, "C").Value
        Loop
        Cells(cell_count, "N").Value = sum
        Cells(cell_count, "O").Value = count
        Cells(cell_count, "P").Value = sum / count
        cell_count = cell_count + 1
        year = year + 1
    Loop
End Sub

使用R,Excel函数,宏或任何其他技术对我来说并不重要。如果有人能告诉我如何将RH和wind_mps的约50000个值的数据集转换为每小时平均值,那就太棒了。

提前致谢。

1 个答案:

答案 0 :(得分:1)

这可以通过Excel数据透视表很容易地完成......

  1. 选择您的数据,然后在顶部菜单功能区中转到Insert&gt; Pivot Table
  2. 在数据透视表设计器中:

    1. 选择您的日期时间作为行标签
    2. 选择RH&amp; wind_mps作为你的价值观
    3. 对于您的两个值,请点击它们并选择Value Field Settings&gt; Average
    4. 在数据透视表中:

      1. 现在,转到您的数据透视表本身并右键单击第一列中的任何日期
      2. 从显示的上下文菜单中选择Group,然后从出现的列表中选择Hours
      3. 这应该可以为您提供您在没有编程的情况下所要做的事情

        希望这可以做你想要的事情