首页 文章

关于R中空间连接的问题

提问于
浏览
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条记录,而表格只有250条. StudentID 中的某些记录将不匹配 .

问题1:

我有一个excel文件,我将其转换为csv以导入到R.在运行连接时,我注意到我的一些数据格式在ID列中发生了变化(因此 123.00 将变为 123; 456.00456; 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中,我的所有点仍然存在 . 为什么删除记录后这些点仍然存在?

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

相关问题