如何计算约40个网站的年度平均值

时间:2019-11-07 14:47:33

标签: r mean

我有一个数据框,其中包含来自40个站点​​的每日数据,我需要计算每个站点的年平均值

  • 数据框称为试用版
  • 变量的名称为Site1,Site2,Site3,直到Site40
  • 我还有一栏列出了日期

日期.................. Site1 ..... Site2 ..... Site3 ..... Untilsite40
2006年1月1日................ 45 ......... 56 ......... 58 .............. ..........
2006年2月1日.......... 67 .......... 3 .......... 45 ............ ...........
2006年3月1日................ 12 .......... 51 ......... 9 ............. ...........
直到2014年

    library("xlsx")
    Trial <- read.xlsx ("Trial.xlsx", sheetIndex = 1, header = TRUE)
    Trial
    Trial$Date <- as.Date(Trial$Date)
    Trial$Month <-months(Trial$Date)
    Trial$Year <-format(Trial$Date, format="%y")

    Means <- aggregate(Site1 ~ Month + Year, Trial, mean)

所有这些都有效,但是它计算的是每月平均值,而不是每年平均值,而且最重要的是,我如何将此代码应用于所有40个站点​​,而不仅是站点1。

4 个答案:

答案 0 :(得分:0)

示例数据将有助于复制问题和解决方案!请编辑您的原始帖子。我只能猜测您的变量对应什么。

library(tidyverse)
Trial_Want<-Trial %>%
  group_by(Site,Year) %>%
  mutate(AnnualMean=mean(variableToAverage))

答案 1 :(得分:0)

一个data.table答案:

library(data.table)
setDT(Trial)
Trial[, .(mean_val= mean(Site1), .(Month, Year)]

答案 2 :(得分:0)

  

变量为Site1,Site2,Site3,直到Site40

     

我还有一栏列出了日期

您需要首先重塑(整理)数据框。在这种特定情况下,您需要使其更长,每行每个站点一次观察。我假设每个站点都有像访问者数量这样的每日信息,所以要取一个平均值。

New_Trial %>%
group_by(site_id, Year) %>%
summarize(anual_mean = mean(number_visitors) )

上面的代码将每一行分成几行,创建变量 site_id ,以存储原始Site1到Site40的信息,另一列 number_visitors ,以存储其原始值。现在,所有信息都应该易于操作。

然后,您将可以使用 group_by 总结的常规dplyr函数组合来分析数据:

{{1}}

答案 3 :(得分:0)

数据帧称为“试验”,头为真。

日期.................. Site1 ..... Site2 ..... Site3 ..... Untilsite40
2006年1月1日................ 45 ......... 56 ......... 58 .............. ..........
2006年2月1日.......... 67 .......... 3 .......... 45 ............ ...........
2006年3月1日................ 12 .......... 51 ......... 9 ............. ...........
直到2014年

日期分为几个月,然后是几年

Trial$Date <- as.Date(Trial$Date)
Trial$Month <-months(Trial$Date)
Trial$Year <-format(Trial$Date, format="%y")

然后,我需要使用cbind创建列的向量。我将向量命名为m1。注意:请确保向量是矩阵。

m1 <-cbind(Trial$Site1, Trial$Site2, ...)

最后一步是:

Means <- aggregate(m1 ~ Year, Trial, mean)