将具有多个维度的数据框转换为栅格图层
Converting dataframe with multiple dimensions to raster layer
我正在为具有多个环境变量的区域创建 raster layer
。所有数据格式通常都是包含 lat
、long
、date
和相关变量的 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 列:lat
、long
、date
和 sea_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
?或者直接进入 raster
在 dataframe
?
中查找每个单元格日期值的 mean
你不能只使用 dplyr 来做这个吗?
以下应该可以正常工作:
library(dplyr)
df %>%
group_by(lat, lon) %>%
summarize(sea_ice_fraction = mean(sea_ice_fraction)) %>%
ungroup()
应该可以正常工作
我正在为具有多个环境变量的区域创建 raster layer
。所有数据格式通常都是包含 lat
、long
、date
和相关变量的 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 列:lat
、long
、date
和 sea_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
?或者直接进入 raster
在 dataframe
?
mean
你不能只使用 dplyr 来做这个吗?
以下应该可以正常工作:
library(dplyr)
df %>%
group_by(lat, lon) %>%
summarize(sea_ice_fraction = mean(sea_ice_fraction)) %>%
ungroup()
应该可以正常工作