如何将shp文件中的数据与数据框中包含的数据进行匹配?

时间:2016-04-06 08:13:46

标签: r coordinates spatial shapefile extraction

我正在从shp文件中绘制空间样本。这样:

pr <- readShapePoly("PuertoRico.shp")
 n <- 90
 samp.reg <- spsample(pr, n, type="regular")

这就是我得到的:

samp.reg
SpatialPoints:
         x1       x2
 #[1,] -66.15482 17.93279
 #[2,] -67.15842 18.02403
 #[3,] -67.06718 18.02403
 #[4,] -66.97595 18.02403
 #[5,] -66.88471 18.02403

等等,直到[90,]

现在,我想从不仅包含坐标的数据框中提取刚刚绘制的样本中包含的那些观察结果,还包括我需要研究的连接变量(即高程)。 您可以在下面看到数据框的外观。

df <- read.csv("pr_elev_rs.csv",header=TRUE)
 head(df)
  Label         x        y elevation
1 BL192 -67.27045 18.36269         0
2 BM191 -67.26450 18.36761        30
3 BM192 -67.26490 18.36020        56
4 BM193 -67.26287 18.35222         0
5 BM194 -67.26075 18.34632         0
6 BN190 -67.25191 18.37403        10

我是R的初学者,我不知道如何做到这一点。谢谢你的帮助,我真的需要它。

1 个答案:

答案 0 :(得分:0)

我不确定我的问题是否正确。

 match <- df$x %in% samp.reg@coords[,1] & df$y %in% samp.reg@coords[,2]
 extract_df_row <- df[match,]

这是你需要的吗?

编辑: 现在你可以分组

 if(nrow(extract_df_row)>0) {
  coordinates(extract_df_row) <- cbind(extract_df_row$x, extract_df_row$y)
  }else{
    cat("no coordinates matching df")
  }