【发布时间】:2018-06-07 09:33:11
【问题描述】:
我是 R 新手,所以这可能很简单,但我还没有找到方法。 我正在尝试按天汇总我的温度数据,因此我有一年中每一天的平均温度。
这是我的数据和我制作的代码示例:
Date Qobs Ptot Fsol Temp PE X
1 1956-11-01 0.001 14.0 -99 12.0 1.4 NA
2 1956-11-02 0.001 0.0 -99 13.5 1.5 NA
3 1956-11-03 0.001 0.0 -99 13.5 1.5 NA
4 1956-11-04 0.001 0.0 -99 13.0 1.4 NA
5 1956-11-05 0.001 0.0 -99 11.5 1.3 NA
6 1956-11-06 0.001 0.0 -99 11.0 1.2 NA
7 1956-11-07 0.001 2.0 -99 12.5 1.3 NA
8 1956-11-08 0.000 0.0 -99 5.0 0.7 NA
9 1956-11-09 0.000 0.5 -99 0.0 0.4 NA
10 1956-11-10 0.000 0.0 -99 -2.5 0.2 NA
11 1956-11-11 0.000 2.5 -99 5.5 0.8 NA
12 1956-11-12 0.000 0.0 -99 7.5 0.9 NA
reg_T=aggregate(x=tmp_data$Temp, by=list(j=format(tmp_data$Date, "%j")), mean)
但是正如您所见,我的数据不是从 1 月 1 日开始的,所以我的数据的第一天是 01/11,这使得以后汇总时变得复杂。 我如何聚合和定义 01/01 的开始并让它忘记我的数据的开始和结束,因为它们不是完整的年份?
谢谢!
dput()的数据:
df <- structure(list(Date = structure(c(-4809, -4808, -4807, -4806, -4805, -4804,
-4803, -4802, -4801, -4800, -4799, -4798, -4797,
-4796, -4795, -4794, -4793, -4792, -4791, -4790,
-4789, -4788, -4787, -4786, -4785, -4784, -4783,
-4782, -4781, -4780), class = "Date"),
Temp = c(12, 13.5, 13.5, 13, 11.5, 11, 12.5, 5, 0, -2.5, 5.5, 7.5,
1.5, 6, 14, 6, 0.5, 0.5, 4, 2, 9, -4.5, -11.5, -10, -4.5,
-2.5, -3.5, -1, -1.5, -7.5)),
.Names = c("Date", "Temp"), row.names = c(NA, 30L), class = "data.frame")
【问题讨论】:
-
换句话说,您感兴趣的只是月份?预期的输出应该是什么?
-
我对一年中每天的平均温度很感兴趣,我需要这样的输出:` j x` 1 001 -1.015094340 2 002 -1.700000000 3 003 -0.883018868 4 004 -1.445283019 5 005 -2.356603774 6 006 -1.360377358 7 007 -1.941509434 8 008-39473584906 9 009-3.3943963584906 9 009-3.39439623580-3.224523584906 9 009 -3.394396230 010101010101010-3943962310 010-394528302 11 011-158302 11 011-158490101011-301012-4.089928302 11 011-1584901011-301012 -3 011-5.1584901011/1012-4.08867924512-4.088679245而不是 1/01。
-
为什么不去
group_by()约会和summarise()?而不是使用aggregate。