R sf st_与if else函数和st_范围的交点

R sf st_与if else函数和st_范围的交点,r,grid,polygon,intersection,sf,R,Grid,Polygon,Intersection,Sf,我有一个sf对象,在欧洲有1km2的网格*和一个sf shapefile,其中包含所有nuts2区域,现在我想提取网格的弹出大小(按面积比例),并在nuts 2级别上求和。 虽然这适用于跨区域的网格,但也适用于超出nuts2区域(例如coast)->的网格,因此最终合并文件中的人口(如果求和)少于原始文件中的人口 这是我的代码: sf_merged <- st_intersection(nuts2, pop_grid) %>% mutate( intersection_

我有一个sf对象,在欧洲有1km2的网格*和一个sf shapefile,其中包含所有nuts2区域,现在我想提取网格的弹出大小(按面积比例),并在nuts 2级别上求和。
虽然这适用于跨区域的网格,但也适用于超出nuts2区域(例如coast)->的网格,因此最终合并文件中的人口(如果求和)少于原始文件中的人口

这是我的代码:

sf_merged <- st_intersection(nuts2, pop_grid)
 %>%
  mutate(
    intersection_area = as.numeric(st_area(.)),
    intersection_fraction = intersection_area / (1000*1000)) %>% 
  mutate_at(
    .vars = c("Pop"),
    .funs = ~ (. * intersection_fraction)
  )%>% 
  group_by(NUTS_ID) %>% 
  summarise_at(
    .vars = c("Pop"),
    .funs = ~sum(., na.rm=T)
  )
sf\u合并%
变异(
交叉点面积=数值(标准面积(.)),
交叉口面积分数=交叉口面积/(1000*1000))%>%
突变(
.vars=c(“Pop”),
.funs=~(*交集_分数)
)%>% 
分组依据(螺母ID)%>%
总结(
.vars=c(“Pop”),
.funs=~sum(,na.rm=T)
)
问题: 例如,是否可以添加一个if-else函数,该函数表示:

  • 如果网格位于螺母sf的外边界内,则使用上述公式
  • 否则,不要计算份额,并采取整个人口
  • 谢谢


    *网格欧洲()和

    您可以首先将网格与欧盟大陆相交,这样对于沿海地区,“网格单元”将不是方形的,而只是陆地。