如何将 shp 文件中的数据与数据框中包含的数据进行匹配?
How to match the data from a shp file with those contained in a dataframe?
我正在从 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 的初学者,我不知道我该怎么做。谢谢你的帮助,我真的需要它。
不确定我是否正确理解了你的问题。
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")
}
我正在从 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 的初学者,我不知道我该怎么做。谢谢你的帮助,我真的需要它。
不确定我是否正确理解了你的问题。
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")
}