关于R中空间连接的问题

时间:2013-03-07 05:34:38

标签: r gis shapefile

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

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条记录,而表格只有250条。StudentID中的某些记录将不匹配。

问题1:

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

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

问题2:

以下是我过去加入两者的原因:

789.01

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

1 个答案:

答案 0 :(得分:0)

问题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), ]