Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将10分钟间隔数据转换为小时平均值_R_Excel_Time Series_Vba - Fatal编程技术网

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

R 将10分钟间隔数据转换为小时平均值,r,excel,time-series,vba,R,Excel,Time Series,Vba,我有一个excel文件(.xlsx),包含三列,标题为:“datetime”(示例:10/1/2008 0:10、10/1/2008 0:20等)、“RH”(示例:0.46)和“wind_mps”(示例:3.71)。我希望将10分钟间隔数据转换为RH和wind_mps列的每小时平均数据 我无法在这个问题中插入Excel数据。很抱歉。如果有人告诉我怎么做,我可以编辑我的问题 一个类似的问题已经在上得到了回答,但我是R新手,无法对我的数据使用相同的技术。我还尝试使用“zoo”、“chron”和“xt

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

我无法在这个问题中插入Excel数据。很抱歉。如果有人告诉我怎么做,我可以编辑我的问题

一个类似的问题已经在上得到了回答,但我是R新手,无法对我的数据使用相同的技术。我还尝试使用“zoo”、“chron”和“xts”包来实现这一点,如中所示,但它们在R3.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
作为整数的全球年份
子计算()
Dim起始年为整数
Dim end_年为整数
Dim单元\u计数为整数
起始年份=单元格(19,“M”)。数值
年末=单元格(48,“M”)。数值
年份=开始年份
单元计数=19
执行年份<(年末+1)
将行设置为整数
双份点心
将计数设置为整数
Dim init_行作为整数
初始行=6
总和=0
计数=0
将cv设置为整数
cv=3
直到cv=年
cv=单元格(初始行,“C”)。值
初始行=初始行+1
环
行=init_行-1
工作表(“表1”)。激活
将cv1设置为整数
cv1=单元格(第“C”行)。数值
当cv1=年时执行
总和=总和+单元格(第“F”行)。值
计数=计数+1
行=行+1
cv1=单元格(第“C”行)。数值
环
单元格(单元格计数,“N”)。值=总和
单元格(单元格计数,“O”)。值=计数
单元格(单元格计数,“P”)。值=总和/计数
单元格计数=单元格计数+1
年份=年份+1
环
端接头
我是否使用R、Excel函数、宏或任何其他技术对我来说都无关紧要。如果有人能告诉我如何将RH和wind_mps的约50000个数据集转换为每小时平均值,那就太好了


提前感谢。

这可以通过Excel数据透视表轻松完成

  • 选择数据,然后在顶部菜单功能区中,转到
    Insert
    >
    Pivot Table
  • 在数据透视表设计器中:

  • 选择日期时间作为行标签
  • 选择相对湿度和风速作为您的值
  • 对于这两个值,单击它们并选择
    Value Field Settings
    >
    Average
  • 在透视表本身中:

  • 现在,转到透视表本身,右键单击第一列中的任何日期
  • 从显示的上下文菜单中选择
    Group
    ,然后从出现的列表中选择
    Hours
  • 这会让你在没有任何编程的情况下完成你想要做的事情


    希望这能满足您的要求

    xts/zoo很简单,我向您保证,它们可以使用R-3.0.2。所以您希望,在每个值旁边是每小时平均值(换句话说,它会重复6次-每10分钟一次)?@JoshuaUlrich我试过xts/zoo。有没有办法将数据帧转换为xts支持的矩阵?我试过这个:矩阵_rhwind@JohnBustos:我希望将10分钟的值聚合为每小时平均值。因此每小时将有一个值,即六个十分钟值的平均值。
    as.xts.data.frame
    假设日期时间是data.frame行名。如果它们不是行名,则需要显式调用
    xts
    构造函数:
    xts(rh_wind2[,c(“rh”,“wind_mps”)],rh_wind2$datetime)
    。然后你可以调用period.apply(x,端点(x,“小时”),意思是)。谢谢。我尝试过这个,但它似乎以一种奇怪的方式聚合了值。我希望我知道如何在不丢失格式的情况下将Excel数据复制到此注释中,以便向您展示正在发生的事情。请描述它?这可能是pivot表的一个问题,可以很容易地修复……在我按“小时”分组之前,一切都很顺利。我最终得到的数据使用标签“12AM”“1AM”等进行聚合,每个标签下大约有88个值。对我来说,最好的结果是每天每小时按一行聚合数据。有什么方法可以做到这一点吗?你可以选择多个项目,按时间、天数、月份等分组。。。