2014-03-27 59 views
0

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

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

类似的问题已在how to convert by the minute data to hourly average data in R得到解答,但我是R新手,无法对我的数据使用相同的技术。我也尝试使用'zoo','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函数,宏或其他技术并不重要。如果有人能告诉我如何将这个大约50000的RH和wind_mps数据集转换为小时平均值,那将会很棒。

在此先感谢。

+0

什么这是很容易与XTS /动物园,我向你保证,他们有R工作-3.0.2。 –

+0

所以你想,每个值的小时平均值(换句话说,它会重复6次 - 每10分钟一次)? –

+0

@JoshuaUlrich我试过xts/zoo。有没有办法将数据帧转换为xts支持的矩阵?我尝试这样做: matrix_rhwind <-as.xts(rh_wind2,DATEFORMAT = 'POSIXct') 却得到:“错误as.POSIXlt.character(X,TZ,...): 字符串不一个标准的明确格式' 你知道发生了什么? –

回答

1

这可以通过Excel数据透视表很容易实现......

  1. 选择您的数据,并在顶部的菜单功能区,去Insert>Pivot Table

在数据透视表设计师:

  1. 选择日期时间为你的行标签
  2. 选择RH &个wind_mps为你的价值观
  3. 为您的价值观,点击它们,并选择Value Field Settings>Average

在数据透视表本身:

  1. 现在,转到您的数据透视表本身并右键单击在第一列中的任一日期
  2. 从上下文菜单中选择Group,然后从出现的列表中选择Hours

这应该给你你正在寻找与所有

希望这没有编程做什么你想

+0

谢谢。我试过了,但它似乎以奇怪的方式汇总了值。我希望我知道如何将Excel数据复制到此评论中,而不会丢失格式,以便我可以告诉你发生了什么。 –

+0

描述为?这可能是一个数据透视表的问题,可以很容易地修复... –

+0

一切都很好,直到'小组''小时'。我最终得到的数据与标签'12AM''1AM'等聚合在一起,每个这样的标签下有大约88个值。对于我来说,最好的结果就是一天中每个小时一行的数据汇总。有没有办法做到这一点? –

相关问题