【问题标题】:Calculating mean by selecting from two columns in a data frame [duplicate]通过从数据框中的两列中选择来计算平均值[重复]
【发布时间】:2015-07-05 21:49:58
【问题描述】:

我想通过两个变量计算 data.frame 的平均值。 请参阅下面的 data.frame(提取)示例:

         Station Time Year Month Value         
         ARO 199501 1995     1      69
         ARO 199502 1995     2      87
         ARO 199503 1995     3     107
         ARO 199601 1996     1      35
         ARO 199602 1996     2      46
         ARO 199603 1996     3      50
         ANT 200401 2004     1      87
         ANT 200402 2004     2     115
         ANT 200403 2004     3     110
         ANT 200501 2005     1      80
         ANT 200502 2005     2     122
         ANT 200503 2005     3     107

更详细地说:我想计算每个站月的平均值,例如第 1 个月的 ARO 平均值 = (69+35)/2,第 1 个月的 ANT 平均值 = (87+80)/2

年份无关紧要,因为我希望每个月和每个站点都有 20 年的平均值。

我的数据框很大,有 61 个站点和 12 个月,每个时间序列 20 年。

我尝试了几种方法,例如 splitaggregateddply,但都没有奏效。 最后,我想要一个新的数据框,如下所示:

Station Month Valuemean
ARO 1 52
ARO 2 66.5
ARO 3 78.5
ANT 1 83.5
ANT 2 118.5
ANT 3 108.5

如果你有一些想法来实现它会很棒。非常感谢!

PS:我是 R 初学者 ;)

【问题讨论】:

  • aggregate(Value ~ Station + Month, df, mean)?

标签: r dataframe mean


【解决方案1】:

你可以使用data.table包:

library(data.table)
setDT(df)[,mean(Value), by=list(Month, Station)]

【讨论】:

    【解决方案2】:

    假设你的数据名为df,你可以试试aggregate

     aggregate(Value~Month+Station, data=df, FUN = mean)
      Month Station Value
    1     1     ANT  83.5
    2     2     ANT 118.5
    3     3     ANT 108.5
    4     1     ARO  52.0
    5     2     ARO  66.5
    6     3     ARO  78.5
    

    【讨论】:

      【解决方案3】:

      使用dplyr 包,如果你的data.frame 被称为dat

      library(dplyr)
      means <- dat %>%
        group_by(Station, Month) %>%
        summarise(Valuemean = mean(Value, na.rm = TRUE))
      

      【讨论】:

        猜你喜欢
        • 2016-03-03
        • 2020-03-03
        • 1970-01-01
        • 2020-12-19
        • 2017-02-16
        • 2014-06-26
        • 2021-06-07
        相关资源
        最近更新 更多