2017-09-10 849 views
2

我試圖使用包ggmap來計算具有地址列表的目標地址的距離。我在一個CSV數據看起來象下面這樣:R消息:錯誤 - 替換有x行,數據有y

Order ID Address 
1652049 435 E 70TH ST,10021 
1652123 1365 YORK AVE,10021 
1652053 530 E 72ND ST,10021 

,所以我嘗試從我的輸入地址得到所有這些地址例如距離:400哈德遜街,10013,我已經R中下面的代碼:

library(ggmap) 
mydata<-read.csv("address.csv") 
mydata$Address<-as.character(mydata$Address) 
mydata$Distance<-NA 
a<-c("289 Hudson St,10013") 
mydata$Distance<-mapdist(mydata$Address,a)$miles 

然而代碼給了我作爲一個如下錯誤信息:

Error in `$<-.data.frame`(`*tmp*`, "Distance", value = c(8.2403854, 8.2403854, : 
    replacement has 53 rows, data has 31 
+1

你能提供一個可重現的例子(有數據)嗎? –

+0

Sry,Cyrus我不知道如何上傳文件,但它是一個簡單的excel cvs文件有2列,一個是ids,另一個是地址。 –

回答

2

確保列名不具有空間;所以不要使用「Order ID」的名稱,而要使用「Order_ID」之類的名稱。也有每個地址有它自己獨立的字符串:

library(ggmap) 

mydata$Address<-as.character(mydata$Address) 
mydata$Distance<-NA 
a<-c("289 Hudson St,10013") 
mydata$Distance<-mapdist(mydata$Address,a)$miles 

輸出:

Order_ID    Address Distance 
1 1652049 435 E 70TH ST,10021 8.240385 
2 1652123 1365 YORK AVE,10021 8.475275 
3 1652053 530 E 72ND ST,10021 8.618197 

的樣本數據:

mydata <- data.frame(Order_ID=c(1652049,1652123,1652053), 
        Address=c('435 E 70TH ST,10021','1365 YORK AVE,10021', 
           '530 E 72ND ST,10021')) 

編輯:

注意的是,在上述數據,每個地址都是它自己的一個向量c()中的字符串。通過在每個地址周圍使用單引號,我們可以看到這種情況。我們這樣做的原因是爲了防止在使用CSV文件(其中有以逗號分隔的列)的情況下混淆數據。在將CSV文件讀入其列中包含逗號的R中之前(例如上面的地址欄),請確保該列中的每個值/單元格都像我自己的字符串一樣保存(即用單引號括起來)。

+0

謝謝。我不確定什麼是一個字符串的意思。在你的例子中,你使用一個向量來組合這些地址,但我正在從CVS文件讀取數據,任何想法,我的輸入不被視爲一個字符串? –

+0

@WorstSQLNoob - 好問題。請參閱上面添加解釋的編輯。 – www

+0

你好瑞恩,我發現了這個問題。在我的數據中,我有不同的order_id地址,那麼它會給我錯誤。但如果我刪除了這些重複的地址,我的原始代碼運作良好。 –