将具有多个维度的数据框转换为栅格图层

Converting dataframe with multiple dimensions to raster layer

我正在为具有多个环境变量的区域创建 raster layer。所有数据格式通常都是包含 latlongdate 和相关变量的 netCDF 文件 (arrays) - 在本例中为 sea_ice_fraction.

海面温度 (sst) 的 data 以易于理解的格式出现,至少从尝试制作预测网格的角度来看是这样:

, , Date = 2019-11-25

         Long
Lat           294.875 295.125 295.375 295.625 295.875 296.125    296.375 296.625 296.875     297.125
  -60.125  2.23000002    2.04    1.83    1.53    1.18    1.00  0.9800000    1.06    1.25  1.40999997
  -60.375  2.06999993    1.79    1.60    1.31    1.09    0.97  1.0000000    1.15    1.30  1.42999995
  -60.625  1.93999994    1.64    1.45    1.28    1.14    1.02  0.9899999    1.03    1.10  1.13000000

每一行是一个单一的纬度坐标(数据的分辨率),每一列是一个与日期配对的经度坐标。

我的目标是计算每个坐标单元格的所有日期值的平均值。 array 的情况很简单:

sst.c1 <- apply(sst.c1, c(1,2), mean)

然后投影到Raster

然而,海冰的格式 data 是在一个数据框中,有 4 列:latlongdatesea_ice_fraction:

   time                   lat   lon sea_ice_fraction
   <chr>                <dbl> <dbl>            <dbl>
 1 2019-11-25T12:00:00Z -66.1 -65.1            0.580
 2 2019-11-25T12:00:00Z -66.1 -65.1           NA    
 3 2019-11-25T12:00:00Z -66.1 -65.0           NA    
 4 2019-11-25T12:00:00Z -66.1 -65.0           NA    
 5 2019-11-25T12:00:00Z -66.1 -64.9           NA    

如何将这个 dataframe 变成类似于 sst 数据的 array?或者直接进入 rasterdataframe?

中查找每个单元格日期值的 mean

你不能只使用 dplyr 来做这个吗?

以下应该可以正常工作:

library(dplyr)
df %>%
   group_by(lat, lon) %>%
   summarize(sea_ice_fraction = mean(sea_ice_fraction)) %>%
   ungroup()

应该可以正常工作