【问题标题】:Questions about Spatial Join in RR中关于空间连接的问题
【发布时间】:2013-03-07 05:34:37
【问题描述】:

我在尝试在 shapefile 和 csv 中的数据表之间进行空间连接时遇到了一些麻烦。

Here's what my data looks like:
Point Shapefile's attribute data (StudentID):
ID      Address  Long  Lat
123.00  street   long  lat
456.00  street   long  lat
789.01  street   long  lat
223.00  street   long  lat
412.02  street   long  lat

Data Table (Table):
ID     Name Age School
123.00 name age school
456.00 name age school
789.01 name age school
223.00 name age school
412.02 name age school

重要提示:StudentID 包含大约 500 条记录,而 Table 只有 250 条。StudentID 中的某些记录将不匹配。

问题一:

我有一个 excel 文件,我将其转换为 csv 以导入 R。在运行连接时,我注意到我的一些数据格式在 ID 列中发生了变化(因此 123.00 将变为 123; 456.00456; 789.01 是一样的)。但是,当我在记事本中打开 csv 文件时,格式是正确的。我尝试将表格读取为 .txt 文件,但没有运气。有谁知道为什么会发生这种情况以及有什么方法可以解决这个问题?

因为我无法根据完全匹配加入数据,所以我决定尝试部分加入,因为无论最后 2 位如何,IDS 都是唯一的,这导致我遇到问题 2...

问题 2:

这是我以前加入两者的:

StudentID@data = data.frame(StudentID@data, data[charmatch(StudentID@data$ID,Table$ID,])

这加入了数据,但也如预期的那样返回了带有 NA 的行。我使用 na.omit 删除了行,结果数据包含所有匹配的数据。但是,在 shapefile 中,我的所有观点仍然存在。为什么这些点在记录被删除后仍然存在?

【问题讨论】:

  • 您丢失了 .00 可能是一个 excel 问题 - 我记得它在导出到 csv 时会发生不可预测的事情。对于“加入”,您是否尝试过使用merge
  • @alexwhan:我认为对于 shapefile 合并不是一个好方法。合并后,行的顺序可能会混合,而相关形状/点的顺序不会自动更新。所以这里的匹配方式比较合适。

标签: r gis shapefile


【解决方案1】:

问题一:

Excel 有时会使用逗号 , 作为小数分隔符导出浮点值。这可能会导致 csv 导入出现问题。确保excel使用点.作为小数分隔符,或者在导入时指定分隔符,即read.csv('file.csv', sep=';')

问题 2: 如果要从 shapefile 中删除具有 na 值的点,则需要一个逻辑向量来选择不再需要的行。这是一个示例(假设您的 shapefile 名为 student_points

student_points <- student_points[!is.na(student_points@data$age), ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多