【发布时间】:2014-06-04 10:50:21
【问题描述】:
我在 R 中有一个 data.frame,其中一列是日期列表(其中许多是重复的),而另一列是该日期记录的温度。有问题的列看起来像这样(但有几千行和一些其他不必要的列):
Date | Temp
-----------------
1/2/13 34.4
1/2/13 36.4
1/2/13 34.3
1/4/13 45.6
1/4/13 33.5
1/5/13 45.2
我需要找到一种获取每日平均温度的方法。所以理想情况下,我可以告诉 R 循环遍历 data.frame 并为每个匹配的日期,给我当天的平均温度。我一直在谷歌搜索,我知道 R 中的循环是可能的,但鉴于我对 R 代码知之甚少,我无法从概念上解决这个问题。
我知道我可以拉出一列并对其进行平均(即mean(data.frame[[2]])),但我完全不知道如何告诉 R 将该平均值与位于第一列中的单个值相匹配。
此外,我如何生成每 7 个日历日的平均值(无论一天有多少条目)?因此,7 天滚动平均值,即如果我的日期范围从 2013 年 1 月 1 日开始,我会得到 13 年 1 月 1 日到 13 年 1 月 7 日之间所有临时时间的平均值,然后在 2013 年 1 月 8 日到 2013 年 1 月 15 日之间……
非常感谢任何帮助我掌握 R 循环的帮助。谢谢!
编辑
这是dput(head(my.dataframe)) 的输出请注意:我编辑了“日期”和“时间戳”,否则它们都会持续数千个条目:
structure(list(RECID = 579:584, SITEID = c(101L, 101L, 101L,
101L, 101L, 101L), MONTH = c(6L, 6L, 6L, 6L, 6L, 6L), DAY = c(7L,
7L, 7L, 7L, 7L, 7L), DATE = structure(c(34L, 34L, 34L, 34L, 34L,
34L), .Label = c("10/1/2013", "10/10/2013", "10/11/2013", "10/12/2013",
"10/2/2013", "10/3/2013", "10/4/2013", "10/5/2013", "10/6/2013",
"10/7/2013", "10/8/2013", "10/9/2013", "6/10/2013", "6/11/2013","9/9/2013"), class = "factor"), TIMESTAMP = structure(784:789, .Label = c("10/1/2013 0:00",
"10/1/2013 1:00", "10/1/2013 10:00", "10/1/2013 11:00", "10/1/2013 12:00",
"10/1/2013 13:00", "10/1/2013 14:00", "10/1/2013 15:00", "10/1/2013 16:00",
"10/1/2013 17:00", "10/1/2013 18:00", "10/1/2013 19:00", "10/1/2013 2:00"), class = "factor"), TEMP = c(23.376, 23.376, 23.833, 24.146,
24.219, 24.05), X.C = c(NA, NA, NA, NA, NA, NA)), .Names = c("RECID",
"SITEID", "MONTH", "DAY", "DATE", "TIMESTAMP", "TEMP", "X.C"), row.names = c(NA,
6L), class = "data.frame")
【问题讨论】:
-
dput看起来不像您的示例数据! -
'每 7 个日历日生成平均值':你的意思是 'average-by-week-of-year',或'移动 7 天平均值'?
-
另外,请注意 R 区分大小写。
Date与DATE不同。 -
dput(head(my.dataframe), n=20)的输出或任何可以的。 -
在我弄清楚区分大小写的位后,我得到了我的每日平均值。 :) 我现在正在考虑滚动平均值...我会编辑问题,但 @smci,请参阅我对您的评论。
标签: r loops for-loop dataframe average