0

json 形式のデータソースを読み込んでいるのですが、それを必要なデータフレームに解析できません。

jsontxt <- '{"sitesEnergy":{"timeUnit":"DAY","unit":"Wh","count":2,"siteEnergyList":[{"siteId":159864,"energyValues":{"measuredBy":"METER","values":[{"date":"2015-09-01 00:00:00","value":2.0},{"date":"2015-09-02 00:00:00","value":2.0}]}},{"siteId":177606,"energyValues":{"measuredBy":"INVERTER","values":[{"date":"2015-09-01 00:00:00","value":null},{"date":"2015-09-02 00:00:00","value":0.0}]}}]}}'
fromJSON(jsontxt,flatten=TRUE)

収量:

$sitesEnergy
$sitesEnergy$timeUnit
[1] "DAY"

$sitesEnergy$unit
[1] "Wh"

$sitesEnergy$count
[1] 2

$sitesEnergy$siteEnergyList
  siteId energyValues.measuredBy                             energyValues.values
1 159864                   METER  2015-09-01 00:00:00, 2015-09-02 00:00:00, 2, 2
2 177606                INVERTER 2015-09-01 00:00:00, 2015-09-02 00:00:00, NA, 0

出力テキストの最初の 7 行は問題ないように見えますが、energyValues.values の値は、日付と値の両方が連結されたバージョンです。私は次のようなものを期待しています:

  siteId energyValues.measuredBy    energyValues.values.date   energyValues.values.value
1 159864                   METER  2015-09-01 00:00:00                2
2 159864                   METER  2015-09-02 00:00:00                2
3 177606                INVERTER  2015-09-01 00:00:00                NA
2 177606                INVERTER  2015-09-02 00:00:00                0

myJSON パケットは不正な形式ですか、fromJSON を不適切に使用していますか、jsontxt を前処理する必要がありますか、それともまったく別のものですか?

私は試した:

fromJSON(jsontxt,simplifyVector = FALSE)

しかし、必要なデータフレームではなくリストを返します。flatten=TRUE パラメータを使用せずに試してみましたが、出力には影響しませんでした。

4

1 に答える 1

1

これがあなたの望むものかどうかわからない...

    library(jsonlite)

    jsontxt <- '{"sitesEnergy":{"timeUnit":"DAY","unit":"Wh","count":2,"siteEnergyList":[{"siteId":159864,"energyValues":{"measuredBy":"METER","values":[{"date":"2015-09-01 00:00:00","value":2.0},{"date":"2015-09-02 00:00:00","value":2.0}]}},{"siteId":177606,"energyValues":{"measuredBy":"INVERTER","values":[{"date":"2015-09-01 00:00:00","value":null},{"date":"2015-09-02 00:00:00","value":0.0}]}}]}}'
    jsontxt<-fromJSON(jsontxt,flatten=TRUE)

    str(jsontxt[[1]][4])

    mydf<- jsontxt[[1]][4][[1]]

    library(tidyr)

    unnest(mydf, energyValues.values)
于 2015-11-05T15:35:26.733 に答える