2013-05-01 2 views
1

JSON에서 그룹화하려는 데이터 세트가 있습니다.JSON 자식 쓰기 R

     address   city.x state.x latitude.x longitude.x 
    1 5601 W. Slauson Ave. #200 Culver City  CA 33.99718 -118.40145 
    2     PO 163005   Austin  TX 30.31622 -97.85877 
    3 10215 W. Jamesburg Street  Wichita  KS 37.70063 -97.43430 
    4   14556 Newport Ave   Tustin  CA 33.74165 -117.82127 
    5  2496 Falcon Crescent Virginia Beach  VA 36.83840 -76.02862 
    6 1306 Wilshire Boulevard Santa Monica  CA 34.03216 -118.49022 

나는 주소와 위도/경도를 함께 그룹화하여 회사 카테고리에 포함하고자합니다.

나는 다음과 같이하고 싶습니다 :

 {company: {address: {address: "5601 W. Slauson Ave. #200" , 
          city.x: "Culver City" , 
          state.x: "CA"}}, 
       {geo: {latitude: "33.99718", 
         longitude: "-118.40145"}}}, 

    {company: {address: {address: "PO 163005" , 
          city.x: "Austin" , 
          state.x: "TX"}}, 
       {geo: {latitude: "30.31622", 
         longitude: "-97.85877"}}}, 



    structure(list(address = c("5601 W. Slauson Ave. #200", "PO 163005", 
    "10215 W. Jamesburg Street", "14556 Newport Ave", "2496 Falcon Crescent", 
    "1306 Wilshire Boulevard"), city.x = c("Culver City", "Austin", 
    "Wichita", "Tustin", "Virginia Beach", "Santa Monica"), state.x = c("CA", 
    "TX", "KS", "CA", "VA", "CA"), latitude.x = c(33.997179, 30.316223, 
    37.700632, 33.741651, 36.838398, 34.032159), longitude.x = c(-118.40145, 
    -97.85877, -97.4343, -117.82127, -76.02862, -118.49022)), .Names = c("address", 
    "city.x", "state.x", "latitude.x", "longitude.x"), class = "data.frame", row.names = c(NA, 
    6L)) 

어떤 도움을 주시면 감사하겠습니다!

답변

0

다음 코드는 출력 당신이 원하는해야하는지 : 데이터 프레임으로 df

for (i in 1:nrow(df)){ 
    cat ("{company:{address:{adress:\t\"",df$address[i], 
     "\",\n\t\tcity.x:\t\"", df$city.x[i], 
     "\",\n\t\tstate.x:\t \"", df$state.x[i], 
     "\"}}\n\t {geo:{\tlatitude: \"", df$latitude[i], 
     "\",\n\t\tlongitude: \"", df$longitude[i], 
     "\"}}},\n", sep="") 
} 

.

0

또 다른 옵션은 rjson 패키지를 사용하는 것입니다.

require(rjson) 
# This is necessary to avoid duplication of labels in the JSON output 
names(df) <- NULL 

reshaped <- apply(df, 1, FUN=function(x){list(address=list(
                address = x[1], 
                city = x[2], 
                state = x[3]), 
              coords=list(
                latitude = x[4], 
                longitude = x[5]))}) 
result <- toJSON(reshaped) 

요청한 유일한 차이점은 "회사"를 루트로 사용하는 대신 연속 번호를 사용한다는 것입니다. ... 내가 가지고있는 가장 가까운 조금 정규 표현식으로 어쩌면

rownames(df) <- paste("company", 1:nrow(df), collapse="")

등을 사용하고 있었다 당신은 (rownames 사용) 데이터의 행 이름을 변경하여 변경할 수 있지만, R 중복 행 이름을 지원하지 않습니다 마술 당신은 출력 문자열에서 숫자를 제거 할 수 ...