【发布时间】:2014-11-03 11:45:24
【问题描述】:
我正在研究一段时间内的土壤呼吸(CO2 通量)数据。每 10 分钟自动测量一次土壤呼吸。
我的数据集包含以下列:
- 年份
- 一天
- 小时
- 分钟
- 以十进制单位表示的时间(天 + 小时/24 + 分钟/(24*60)
- 土壤呼吸作用
土壤呼吸每 10 分钟测量一次,所以我每天有 144 个值。 对于特定的分析,我需要每天每 3 小时获取一次值的平均值。
- 0h : 第一天 00:00 的 1 个值,然后是 21:10 和 00:00 之间的值的平均值
- 3h(0:10、0:20、0:30、0:40、0:50、1:0、1:10、1:20、[...] 2:50 的平均值;3: 00) 18 个值的平均值。
- 6h(3:10 到 6:00 之间的平均值)
- 12 小时(6:10 到 12:00 之间的平均值)
- 15 小时(12:10 到 15:00 之间的平均值)
- 18 小时(15:10 到 18:00 之间的平均值)
- 21h(18:10 到 21:00 之间的平均值)
- 00h(21:10 到 00:00 之间的平均值)
等等... 所以每天我想获得 8 个土壤呼吸值,每个值都是 18 个值的平均值。
我怎么能用 R 来编程呢? 我有非常大的数据集,所以我不能每天手动完成。
数据集示例:
Year =c(2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014,2014)
Day= c(274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274)
Hours= c(0,0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3)
Minutes = c(0,10,20,30,40,50,0,10,20,30,40,50,0,10,20,30,40,50,0,10,20,30,40,50)
Time_Dec=c(274.000,274.007,274.014,274.021,274.028,274.035,274.042,274.049,274.056,274.063,274.069,274.076,274.083,274.090,274.097,274.104,274.111,274.118,274.125,274.132,274.139,274.146,274.153,274.160)
Flux=c(0.84,0.88,0.91,0.95,0.98,1.02,0.84,0.87,0.91,0.94,0.98,1.01,0.83,0.87,0.90,0.94,0.97,1.01,0.83,0.87,0.90,0.94,0.97,1.00)
所以,我想保留第一个值,然后为后面的第 18 个值取平均值(直到Time_Dec= 274.125)
【问题讨论】:
-
您可以使用
cut对值进行分组。如果您显示一个小型示例数据集可能会更好。 -
您的列中有
Month信息吗? -
不,我只有当天的数字。例如,今天是第 307 天。第 1 天是一月的第一天。
-
我会看看它。告诉 R 计算每 18 个值的平均值会更容易吗?将 18 个值分组并从数据集的开头开始(我只需要删除第一行)......但我不知道该怎么做。
-
是的,这些值都是按时间顺序排列的。
标签: r