应用于json输入的融合函数用因子替换一些值

时间:2015-07-08 13:29:40

标签: r reshape2 rjson

我有以下json文件:

{
  "observations": [
    {
      "type": "ob_type_1",
      "data": {
        "dynamic": {
          "sensor": [
            {
              "timestamp": 552625694285098,
              "a": 1.4921862,
              "b": 8.613739
            },
            {
              "timestamp": 552625699285098,
              "a": 0.6907272,
              "b": 7.6243353
            }
          ]
        },
        "static": {
          "class1": "abc",
          "class2": "xyz"
        }
      }
    }
  ]
}

我使用rjson导入它:

library(rjson)
raw_json <- fromJSON(file=json_file)

要重现,请使用:

raw_json <-    structure(list(observations = list(structure(list(type = "ob_type_1", 
        data = structure(list(dynamic = structure(list(sensor = list(
            structure(list(timestamp = 552625694285098, a = 1.4921862, 
                b = 8.613739), .Names = c("timestamp", "a", "b")), 
            structure(list(timestamp = 552625699285098, a = 0.6907272, 
                b = 7.6243353), .Names = c("timestamp", "a", "b")))), .Names = "sensor"), 
            static = structure(list(class1 = "abc", class2 = "xyz"), .Names = c("class1", 
            "class2"))), .Names = c("dynamic", "static"))), .Names = c("type", 
    "data")))), .Names = "observations")

然后我使用reshape2融化它:

library(reshape2)    
reshape_json <- melt(raw_json)

值列显示&#39; 1&#39;和&#39; 2&#39;对于&#39; class1&#39;和&#39; class2&#39;。我希望这些是&#39; abc&#39;和&#39; xyz&#39;。我怎样才能做到这一点?我过去曾尝试使用jsonlite,但是当我的json文件嵌套数组时,我很难获得正确的输出。

            value        L7 L6     L5      L4   L3 L2           L1
1       ob_type_1      <NA> NA   <NA>    <NA> type  1 observations
2 552625694285098 timestamp  1 sensor dynamic data  1 observations
3       1.4921862         a  1 sensor dynamic data  1 observations
4        8.613739         b  1 sensor dynamic data  1 observations
5 552625699285098 timestamp  2 sensor dynamic data  1 observations
6       0.6907272         a  2 sensor dynamic data  1 observations
7       7.6243353         b  2 sensor dynamic data  1 observations
8               1      <NA> NA class1  static data  1 observations
9               2      <NA> NA class2  static data  1 observations

1 个答案:

答案 0 :(得分:0)

options(stringsAsFactors = FALSE)