2017-11-11 2 views
2

먼저 여러 장으로 구성된 xlsx 파일을 떼어 냈습니다.xlsx를 json으로 변환 R

# install.packages("readxl") 

library(readxl) 
library("rjson") 

# read_excel reads 
df1 <- read_excel("C:/Users/Adminstrator/Downloads/file.xlsx", sheet = 1) 
df2 <- read_excel("C:/Users/Adminstrator/Downloads/file.xlsx", sheet = 2) 
df3 <- read_excel("C:/Users/Adminstrator/Downloads/file.xlsx", sheet = 3) 

df의 내용은 다음과 같습니다.

Alabama Hoover 33.40556 -86.81111 
Alabama Hoover 33.40565 -86.81314 
Alabama Hoover 33.40555 -86.81343 
Alabama Dothan 31.22722 -85.40722 
Alabama Gadsden 34.01028 -86.01028 
Alaska Chugiak 61.38778 -149.48139 
... 

이 xlsx 파일을 json으로 바꾸고 싶습니다.

{ 
    "Alabama" : { 
       "Hoover": { 
          "x":[33.40556, 33.40565, 33.40555], 
          "y":[-86.81111, -86.81314, -86.81343] 
          }, 
       "Dothan": { 
          "x":[31.22722], 
          "y":[-85.40722] 
          }, 
        ... 
       }, 
    "Alaska" : { 
       "Chugiak" : { 
          "x":[61.38778], 
          "y":[-149.48139] 
          }, 
       ... 
      } 
    ... 
} 

xlsx 파일을 json으로 어떻게 바꿀 수 있습니까? 도와주세요. 덕분에 .

+0

귀하의 데이터는 엑셀하지만 data.frame (또는 일부 변형)이 아니다. 'rjson' 또는'jsonlite'에서'toJSON' 함수를 사용할 수 있습니다. 예 : https://stackoverflow.com/questions/25550711/convert-data-frame-to-json –

+0

원하는 형식으로 넣지 않을 @ RomanLuštrik. OP는 전혀 작업을 수행하지 않고 데이터를 사용자 정의 형식으로 변환하려고합니다. 다른 q에서 R이나 파이썬이 기본 언어라고 생각하지 않습니다. – hrbrmstr

+0

프로그래밍을 통해 데이터 프레임을 원하는 형식으로 변경할 수 있습니다. 첫 번째 열에서 두 번째 열의 고유 한 값으로 그룹화/반복하고 JSON 문자열을 작성합니다. 당신은 시도를 보여주지 않았고 문제가있는 곳을 보았습니다. – hrbrmstr

답변

3

split 기능이 data.table 인 경우 매우 유용합니다.

dd <- data.frame(
    state = c("Alabama", "Alabama", "Alabama", "Alsaka"), 
    city = c("Hoover", "Hoover", "Dothan", "Chugiak"), 
    x = c(1, 2, 3, 4), 
    y = c(5, 6, 7, 8), 
    stringsAsFactors=FALSE 
) 

library(data.table) 
dt <- as.data.table(dd) 
dt_split <- split(dt, by=c("state", "city"), keep.by=FALSE, flatten=FALSE) 

당신이 얻을 :

> dt_split 
$Alabama 
$Alabama$Hoover 
    x y 
1: 1 5 
2: 2 6 

$Alabama$Dothan 
    x y 
1: 3 7 


$Alsaka 
$Alsaka$Chugiak 
    x y 
1: 4 8 

지금 jsonlite를 사용

> library(jsonlite) 
> toJSON(dt_split, dataframe = "columns", pretty=TRUE) 
{ 
    "Alabama": { 
    "Hoover": { 
     "x": [1, 2], 
     "y": [5, 6] 
    }, 
    "Dothan": { 
     "x": [3], 
     "y": [7] 
    } 
    }, 
    "Alsaka": { 
    "Chugiak": { 
     "x": [4], 
     "y": [8] 
    } 
    } 
} 
+0

JSON 오류 (dt_split, dataframe = "columns", pretty = TRUE)에 정말 감사드립니다. 사용하지 않은 인수 (dataframe = "columns", pretty = TRUE) 이 오류가 발생했습니다. 왜? – Dekalotte

+0

아, 해결되었습니다. 제게 알려 주셔서 대단히 감사합니다 !! – Dekalotte