R JSON

2016-08-26 6 views
0

summary(df)からの清潔な出力を得るには、すべてが余分な余白を持たず、実際に「最小:3」という列が1つの列にあるJSONまたはデータフレームとして出力されますか?R JSON

[ 
    { 
     "column1": { 
      "Min": 1, 
      "Max": 3, 
      "3rd Qu": 5 
      ... 
     } 
    }, 

    { 
     "column2": { 
      "Min": 2, 
      "Max": 4, 
      "3rd Qu": 5, 
      ... 
     } 
    } 
] 
+0

[broom](https://cran.r-project.org/web/packages/broom/index.html)のパッケージを確認してください。 – Tutuchan

答えて

2

ありオプションの多くは、JSONに変換するためですが、あなたは最初にあなたが望む方法(あるいはまったく)に変換するフォーマットにデータを取得する必要があります:私はこのような何かを持っていると思います。したがって、サマリーをリストとしてアセンブルするのが最も簡単なので、JSONの階層を決定できます。読みやすくするために配管やpurrr::map(のようなlapply)の使用:

jsonlite::toJSON(lapply(iris, function(x){as.list(summary(x))}), pretty = TRUE, auto_unbox = TRUE) 

{ 
    "Sepal.Length": { 
    "Min.": 4.3, 
    "1st Qu.": 5.1, 
    "Median": 5.8, 
    "Mean": 5.843, 
    "3rd Qu.": 6.4, 
    "Max.": 7.9 
    }, 
    "Sepal.Width": { 
    "Min.": 2, 
    "1st Qu.": 2.8, 
    "Median": 3, 
    "Mean": 3.057, 
    "3rd Qu.": 3.3, 
    "Max.": 4.4 
    }, 
    "Petal.Length": { 
    "Min.": 1, 
    "1st Qu.": 1.6, 
    "Median": 4.35, 
    "Mean": 3.758, 
    "3rd Qu.": 5.1, 
    "Max.": 6.9 
    }, 
    "Petal.Width": { 
    "Min.": 0.1, 
    "1st Qu.": 0.3, 
    "Median": 1.3, 
    "Mean": 1.199, 
    "3rd Qu.": 1.8, 
    "Max.": 2.5 
    }, 
    "Species": { 
    "setosa": 50, 
    "versicolor": 50, 
    "virginica": 50 
    } 
} 

あなたがいないパイプを行いたい場合は、あなたがpurrrせずにそれを行うことができますを返す

library(purrr) 

iris %>% map(summary) %>% # make a list of summaries in case both numeric/factor 
    map(as.list) %>%  # coerce each summary to a list 
    jsonlite::toJSON(auto_unbox = TRUE, pretty = TRUE) # convert to JSON, make it legible 

それは同じことを返します。

+0

ありがとうございます。データフレームにlapplyが必要な理由を説明できますか? –

+0

'as.list(summary(iris))'を呼び出すだけで、各列を要素として望む階層は得られません。また、いくつかの要約が他のものより長い場合は 'NA'が挿入されます。簡単に言えば、いくつかの小さなサマリーを、より大きな複雑なものよりも必要な形に変換する方が簡単です。 – alistaire

関連する問題