2013-03-07 103 views
2

我試圖在csv中的shapefile和數據表之間進行空間連接時遇到了一些麻煩。關於空間加入R的問題

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文件,但沒有運氣。有誰知道爲什麼會發生這種情況,有什麼辦法來克服這一點?

因爲我不能參加基於精確匹配的數據,我決定嘗試部分連接,因爲ID都是唯一的,無論最後2個位數,這使我問題2 ...

問題2:

這是我用來連接兩個:

[email protected] = data.frame([email protected], data[charmatch([email protected]$ID,Table$ID,]) 

這加入了數據,而且,正如預期,隨着來港返回的行。我使用na.omit刪除行,並且生成的數據包含所有匹配的數據。但是,在shapefile中,我所有的點都在那裏。爲什麼這些點在記錄被刪除後仍然存在?

+1

你的損失'.00'可能是一個Excel的問題 - 我記得它導出到時不可預知的事情CSV。對於'加入',你有沒有嘗試過使用'merge'? – alexwhan 2013-03-07 05:38:43

+0

@alexwhan:我認爲shapefile合併不是一個好方法。 Upone合併行的順序可能會混合,而關聯的形狀/點的順序不會自動更新。所以比賽方法在這裏更合適。 – yellowcap 2013-03-07 19:30:27

回答

0

問題1:

Excel中有時出口浮動使用逗號值,爲十進制分隔符。這可能會導致csv導入中出現問題。確保Excel對小數點分隔符使用.點,或者在導入時指定分隔符,即read.csv('file.csv', sep=';')

問題2: 如果要從shapefile中刪除具有na值的點,則需要一個邏輯向量來選擇不再需要的行。下面是如何可能看起來像(假設你的shape文件被命名爲student_points)爲例

student_points <- student_points[!is.na([email protected]$age), ]