2

我在尝试在 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 条记录,而 Table 只有 250 条。其中的某些记录StudentID将不匹配。

问题1:

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

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

问题2:

这是我用来加入两者的:

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

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

4

1 回答 1

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

于 2013-03-07T19:26:38.467 回答