2017-11-11 10 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やPythonが主言語であるとは思わない。 – hrbrmstr

+0

プログラミングによって、データフレームを希望のフォーマットに変更することができます。 最初の列と2番目の列で一意の値をグループ化/反復し、それらから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

関連する問題