【发布时间】:2011-08-16 15:01:04
【问题描述】:
假设我有过去 20 年的最高温度数据。我的数据框有一列代表月、日、年和 MAX_C(温度数据)。我想计算从一年的 6 月 31 日到前一年的 7 月 1 日的平均(和标准偏差和范围)最高温度(即从 1991 年 7 月 1 日到 1992 年 6 月 31 日的平均最高每日温度)。有没有有效的方法来做到这一点?
到目前为止,我的方法是创建一个数组:
maxt.prev12<-tapply(maxt$MAX_C,INDEX=list(maxt$month,maxt$day,maxt$year),mean)
我将 mean 放入函数中,因为 tapply 不会在 INDEX 之后生成没有函数的数组,但 mean 实际上并没有在这里计算任何东西。然后我在考虑尝试从一个矩阵(即 1992 年)中取 1 月到 6 月,从前面的矩阵(即 1991 年)中取 7 月到 12 月,然后计算平均值。我不完全确定如何做那部分,但是,在 R
中必须有一种更有效的方法来执行这些计算编辑 这是一个简单的样本数据集
maxt
day month year MAX_C
1 1 1990 29
1 2 1990 28
1 3 1990 32
1 4 1990 26
1 5 1990 24
1 6 1990 32
1 7 1990 30
1 8 1990 28
1 9 1990 28
1 10 1990 24
1 11 1990 30
1 12 1990 30
1 1 1991 25
1 2 1991 26
1 3 1991 28
1 4 1991 25
1 5 1991 24
1 6 1991 32
1 7 1991 26
1 8 1991 32
1 9 1991 26
1 10 1991 26
1 11 1991 27
1 12 1991 26
1 1 1992 27
1 2 1992 25
1 3 1992 29
1 4 1992 32
1 5 1992 27
1 6 1992 27
1 7 1992 24
1 8 1992 25
1 9 1992 28
1 10 1992 26
1 11 1992 31
1 12 1992 27
【问题讨论】:
-
样本数据会很有帮助。使用
dput(myData) -
dput很好,因为回复您帖子的人不必重新导入数据(例如将 DATE 列导入 POSIX*)。 -
抱歉含糊不清。如果您的数据集名为
maxt,则可以在 R 控制台中运行dput(maxt)。复制该命令的输出并将其粘贴到您的问题中。这将允许其他人在我们的 R 会话中重新创建数据集。需要明确的是 - 这将是您的数据集的精确副本,因此如果它是不应该共享的敏感数据 - 然后制作一些说明问题的虚拟数据。