r - 在 R 中创建 SpatialPointsDataFrame 时如何保持缺失坐标

标签 r missing-data r-sp

我有一个动物位置数据集(GPS 位置、纬度和经度),但位置之间缺少一些坐标。我正在使用 R 来读取它们并更改它们的投影,但我想保留这个缺失的坐标点,以便稍后可以对它们进行插值(或者可以完成任何其他操作)。

但是,当我尝试将数据转换为 SpatialPointsDataFrame (以便稍后使用 spTransform 重新投影)时,我收到错误:

Error in .local(obj, ...) : NA values in coordinates

在创建 SpatialPointsDataFrame 时,是否有办法将该 NA 保持在同一位置?

这里有一些可重现的代码:

mov.data <- data.frame(x = c(-49.8427, -49.85003, NA, -49.84685),
                       y = c(-21.30366, -21.29498, NA, -21.2944),
                       time = 1:4, ID = 1)

mov.spdata <- SpatialPointsDataFrame(coords = mov.data[,1:2],
                                     data = mov.data[,3:4])

当我运行它时,我收到上面显示的错误。有什么提示吗?

最佳答案

sp 对象不允许坐标中缺少值。这已经是discussed on GitHub通过 Edzer Pebesma ,他也在 Stackoverflow 上(简短地)回答了这个问题。

解决方案:

mov.data <- data.frame(x = c(-49.8427, -49.85003, NA, -49.84685),
                       y = c(-21.30366, -21.29498, NA, -21.2944),
                       time = 1:4, ID = 1)

# If there are NA values, replace them by 0 and add a column to keep information
mov.data$is_na = ifelse(is.na(mov.data$x), TRUE, FALSE)
index = mov.data$is_na == TRUE
mov.data[index, "x"] <- 0
mov.data[index, "y"] <- 0

mov.data <- SpatialPointsDataFrame(coords = mov.data[, 1:2],
                                   data = mov.data[, 3:5])

你得到:

            coordinates time ID is_na
1  (-49.8427, -21.30366)    1  1 FALSE
2 (-49.85003, -21.29498)    2  1 FALSE
3                 (0, 0)    3  1  TRUE
4  (-49.84685, -21.2944)    4  1 FALSE

然后,利用这些信息,您可以执行所需的所有转换,例如将结果写入 CSV 文件或任何您想要的格式。

关于r - 在 R 中创建 SpatialPointsDataFrame 时如何保持缺失坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49452106/

相关文章:

将另一个数据框中的列名称替换为 R 中缺少的列名称?

编译错误 "name in formal parameter list illegal"

R data.table 将 NA 替换为数字列的平均值和标称值的最常见值

r - 根据 50 英里半径对位置进行分组

R sp : unit of area of Polygon

r - tidyr::pivot_longer() 函数不适用于将列从逻辑转换为整数的 tibble

sqlite - 如何使用 RSqlite 将 CSV 导入到 sqlite 中?

r - 打印数据框时如何更改 stargazer 中的列名称?

R - 最近的 SpatialPolygonsDataFrame 从大西洋到太平洋 View 但保留数据

r - 在 Shiny 中永久保存一个对象在内存中