从this file我想提取某些坐标的所有值。
所以我创建了一个RasterBrick:
Symphony
现在我想提取某些坐标的所有值(从1950-01-01到2015-06-30的每日沉降),例如lon 9.258157 lat 47.70842
我尝试了library(raster)
library(R.utils)
rr <- gunzip("rr_0.25deg_reg_v12.0.nc.gz")
rr <- brick(rr)
> rr
class : RasterBrick
dimensions : 201, 464, 93264, 23922 (nrow, ncol, ncell, nlayers)
resolution : 0.25, 0.25 (x, y)
extent : -40.5, 75.5, 25.25, 75.5 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : C:\...\rr_0.25deg_reg_v12.0.nc
names : X1950.01.01, X1950.01.02, X1950.01.03, X1950.01.04, X1950.01.05, X1950.01.06, X1950.01.07, X1950.01.08, X1950.01.09, X1950.01.10, X1950.01.11, X1950.01.12, X1950.01.13, X1950.01.14, X1950.01.15, ...
Date : 1950-01-01, 2015-06-30 (min, max)
varname : rr
:
extract
导致:
raster::extract(rr, cbind(9.258157, 47.70842), df = TRUE)
但是我想要一个有两列(日期和值)作为输出的数据框,所以我做了:
'data.frame': 1 obs. of 23923 variables:
$ ID : num 1
$ X1950.01.01: num 0
$ X1950.01.02: num 9.3
$ X1950.01.03: num 4.2
$ X1950.01.04: num 11.2
$ X1950.01.05: num 0
$ X1950.01.06: num 0
$ X1950.01.07: num 0
$ X1950.01.08: num 0
$ X1950.01.09: num 0
$ X1950.01.10: num 0
...
但我怀疑这是最好的方法,必须有一个更直接的解决方案吗?
答案 0 :(得分:1)
如何使用tidyr::gather
?
xy <- raster::extract(rr, cbind(9.258157, 47.70842), df = TRUE)[, 1:10]
library(tidyr)
xy
ID X1950.01.01 X1950.01.02 X1950.01.03 X1950.01.04 X1950.01.05 X1950.01.06 X1950.01.07 X1950.01.08 X1950.01.09
1 1 0 9.3 4.2 11.2 0 0 0 0 0
gather(xy[, -1], key = datum, value = Prcp)
datum Prcp
1 X1950.01.01 0.0
2 X1950.01.02 9.3
3 X1950.01.03 4.2
4 X1950.01.04 11.2
5 X1950.01.05 0.0
6 X1950.01.06 0.0
7 X1950.01.07 0.0
8 X1950.01.08 0.0
9 X1950.01.09 0.0