2016-03-01 20 views
-4

我有两个数据框df1df2(见下文)出口值

df1<-structure(list(Lat = c(-89.75, -89.25, -88.75, -88.25, -87.75, 
-87.25, -86.75, -86.25, -85.75, -85.25), Long = c(-179.75, -179.25, 
-178.75, -178.25, -177.75, -177.25, -176.75, -176.25, -175.75, 
-175.25), NOy = c(3.91364542905387e-15, 3.91952637880666e-15, 
3.92540732855945e-15, 3.93128785479576e-15, 3.93716880454855e-15, 
3.93803955441832e-15, 3.93390010440509e-15, 3.92976065439186e-15, 
3.92562120437863e-15, 3.9214817543654e-15), NHx = c(1.14955574068474e-15, 
1.1571213330905e-15, 1.16468681961713e-15, 1.17225241202289e-15, 
1.17981800442865e-15, 1.18044237358989e-15, 1.17412562538574e-15, 
1.1678088771816e-15, 1.16149212897745e-15, 1.1551753807733e-15 
)), .Names = c("Lat", "Long", "NOy", "NHx"), row.names = c(NA, 
10L), class = "data.frame") 

df2<- structure(list(x = c(148.1516, 4.5206, 5.9981, -51.4500008, -125.3336, 
-125.2909, -124.9004, -82.1556, -98.4808, -98.4839), y = c(-35.6566, 
51.3092, 50.3051, -1.72000003, 49.8673, 49.8705, 49.5346, 48.2167, 
55.8796, 55.8792)), .Names = c("x", "y"), row.names = c(NA, 10L 
), class = "data.frame") 

两个数据帧包含纬度和经度坐标。我想从df1中导出值NOy和NHx,它们在某种程度上在df2的坐标范围内。输出将是一个数据帧,其中包含df2的坐标值以及从df1导出的各自的NOy和NHx值。 df3显示了输出的样子。 NA值显然应该是从df1而不是NA输出的真实数据。

df3<- structure(list(x = c(148.1516, 4.5206, 5.9981, -51.4500008, -125.3336, 
-125.2909, -124.9004, -82.1556, -98.4808, -98.4839), y = c(-35.6566, 
51.3092, 50.3051, -1.72000003, 49.8673, 49.8705, 49.5346, 48.2167, 
55.8796, 55.8792), NOy = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA), NHx = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("x", 
"y", "NOy", "NHx"), row.names = c(NA, 10L), class = "data.frame") 

任何人都知道该怎么做?

+2

显示您期望从示例中得到的结果。这条线根据df2的坐标不清楚。这可能意味着很多事情。请澄清。 –

+0

我将它改为“我想从df1中导出值为NOY和NHX的值,这些值在df2的坐标内”。希望这更清楚。 – SimonB

+0

你回避了皮埃尔实际询问的内容。你期望输出是什么? – Adam

回答

0

df1最初来自一个ncdf文件,因此,我代替创建的光栅对象为每个可变NOY和NHX这样的:

library(raster) 
NOy_Raster <- raster("file.nc", varname="NOy_deposition") 
NHx_Raster <- raster("file.nc", varname="NHx_deposition") 

我然后萃取NOY和NHX的值与所述点在数据帧中的坐标df2原样:

df3 <- data.frame(coordinates(df2), 
        df2$x, 
        extract(NOy_Raster, df2), 
        extract(NHx_Raster, df2))