2017-09-10 16 views
2

ggmap 패키지를 사용하여 대상 주소와 주소를 주소 목록으로 계산하려고합니다.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 코드를 다음 한 아래처럼 CSV에서 내 데이터 보인다

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 CSV 파일에는 2 개의 열이 있는데, 하나는 ID이고 다른 하나는 주소입니다. –

답변

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 파일을 사용하는 경우 데이터가 혼합되는 것을 방지하기 위해서입니다. 위의 주소 열과 같은 열에 쉼표가있는 R로 CSV 파일을 읽기 전에 해당 열의 각 값/셀이 완료된 것처럼 (즉, 작은 따옴표로 묶여서) 자체 문자열로 저장되는지 확인하십시오.

+0

감사합니다. 하나의 문자열 means.In 귀하의 예제에서는, 그 주소를 결합하는 벡터를 사용하여 모르겠지만 cvs 파일에서 데이터를 읽고, 어떤 아이디어, 내 입력 한 문자열로 간주하지 않습니다? –

+0

@WorstSQLNoob - 좋은 질문입니다. 위의 설명을 추가하는 편집을 참조하십시오. – www

+0

안녕하세요. Ryan, 문제를 발견했습니다. 내 데이터에서 다른 order_id에 대해 동일한 주소를 가졌으므로 오류가 발생합니다. 그러나 만약 내가 그 중복 주소를 제거, 내 원래의 코드가 잘 작동합니다. –