1

R data.frameに強制しようとしている単純なJSONファイルがあります。

json = "
{ \"objects\":
  {
    \"object_one\": {
      \"key1\"        : \"value1\",
      \"key2\"        : \"value2\",
      \"key3\"        : \"0\",
      \"key4\"        : \"value3\",
      \"key5\"        : \"False\",
      \"key6\"        : \"False\"
    },

    \"object_two\": {
      \"key1\"        : \"0.5\",
      \"key2\"        : \"0\",
      \"key3\"        : \"343\",
      \"key4\"        : \"value4\",
      \"key5\"        : \"True\",
      \"key6\"        : \"True\"
    }
  }
}
"

各オブジェクトの名前をインデックス キー (または行名) として抽出し、キーから列名を作成し、値を分散させたいだけです。

残念ながら、構文をアンピックできませんでした。誰でも助けることができますか?

ありがとう

スチュアート

4

2 に答える 2

1

目的の出力については完全にはわかりませんが、 を使用jsonlite::fromJSONしてデータを抽出し、data.table::rbindlistそれをdata.table

library(jsonlite)
library(data.table)

rbindlist(fromJSON(json))

#     object_one object_two
# 1:     value1        0.5
# 2:     value2          0
# 3:          0        343
# 4:     value3     value4
# 5:      False       True
# 6:      False       True

あなたのコメントに基づいて、いくつかの再形成を伴う別のアプローチ

library(jsonlite)
library(reshape2)

lst <- fromJSON(json)
lst <- lapply(lst[[1]], unlist)

df <- as.data.frame(lst)
df$key <- rownames(df)

df <- melt(df, id = "key")
df <- dcast(df, formula = variable ~ key)
df
#      variable   key1   key2 key3   key4  key5  key6
# 1 object_one value1 value2    0 value3 False False
# 2 object_two    0.5      0  343 value4  True  True
于 2016-05-26T04:41:17.003 に答える