【发布时间】:2014-03-03 01:10:39
【问题描述】:
大家好,
我有一个包含许多数据列的 data.frame,但是,对于每一行,我只对这些列的一个子集感兴趣。我想使用另一个特定值来标识我感兴趣的列。然后我将取感兴趣的列和前 5 个列的平均值。
我的 data.frame 包括点位置、收集月份以及从 1996 年至 2012 年期间每个点的一组月度栅格中提取的值。对于每个点,我都对收集日期之前的六个月平均值感兴趣,例如。如果我在 200106 (06/2001) 记录了一个变量,我想要 200101-200106 的栅格的平均值。
收集值的日期编码与对应于同一月份提取的值的列名称相同。
根据我的收集日期,有没有办法识别我感兴趣的列?
我的 data.frame 看起来像:
df <- data.frame(lat = c(-34, -34.5, -35, -35.5, -36, -36.5, -37),
lon = c(144, 144.5, 145, 145.5, 146, 146.5, 147),
dt = c('x200106', 'x200107', 'x200108', 'x200109', 'x200110', 'x200111', 'x200112'),
x200101 = c(1, 2, 3, 4, 5, 6, 7),
x200102 = c(10, 20, 30, 40, 50, 60, 70),
x200103 = c(1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5),
x200104 = c(11, 12, 13, 14, 15, 16, 17),
x200105 = c(11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5),
x200106 = c(1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7),
x200107 = c(21, 22, 23, 24, 25, 26, 27),
x200108 = c(10, 20, 30, 40, 50, 60, 70),
x200109 = c(1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5),
x200110 = c(11, 12, 13, 14, 15, 16, 17),
x200111 = c(11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5),
x200112 = c(1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7))
给定 dt(日期)我可以得到相应列的六个月平均值吗?
我不知道如何继续,我想象某种数据转换,但不知道从哪里开始。任何帮助将不胜感激。非常感谢!
干杯, 亚当
【问题讨论】:
-
日期应该在行和列中吗?
-
@6pool 是的。 dt 列是收集数据点的日期。日期为 col.names 的列对应于从中提取列值的栅格文件。我想使用我的 dt 值来查找“dt”行中包含的相应栅格数据。这令人困惑,我不善于解释我想要做什么,对此我深表歉意。
-
亚当,我下面的回答不符合您的要求吗?还是我误会了?
标签: r dataframe gis data-manipulation r-raster