【发布时间】: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.00到456; 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 合并不是一个好方法。合并后,行的顺序可能会混合,而相关形状/点的顺序不会自动更新。所以这里的匹配方式比较合适。