2014-10-21 83 views
1

返回嵌套数据帧我加载该JSON数据与jsonlite如何从压扁jsonlite

<snip> 
"rawData": { 
    "fortune": {}, 
    "plaintext": {}, 
    "db": {}, 
    "update": { 
     "duda": [ 
     { 
      "latencyAvg": "201.40us", 
      "latencyMax": "727.00us", 
      "latencyStdev": "54.85us", 
      "totalRequests": 561810, 
      "startTime": 1413890149, 
      "endTime": 1413890164 
     } 
     ] 
     }, 
    "json": { 
     "duda": [ 
     { 
      "latencyAvg": "201.40us", 
      "latencyMax": "727.00us", 
      "latencyStdev": "54.85us", 
      "totalRequests": 561810, 
      "startTime": 1413890149, 
      "endTime": 1413890164 
     } 
     ] 
    }, 
    "query": {} 
    } 

其中在结构嵌套数据帧的结果

data <- structure(list(fortune = structure(list(), .Names = character(0)), 
    plaintext = structure(list(), .Names = character(0)), db = structure(list(), .Names = character(0)), 
    update = structure(list(duda = structure(list(latencyAvg = "201.40us", 
     latencyMax = "727.00us", latencyStdev = "54.85us", totalRequests = 561810L, 
     startTime = 1413890149L, endTime = 1413890164L), .Names = c("latencyAvg", 
    "latencyMax", "latencyStdev", "totalRequests", "startTime", 
    "endTime"), class = "data.frame", row.names = 1L)), .Names = "duda"), 
    json = structure(list(duda = structure(list(latencyAvg = "201.40us", 
     latencyMax = "727.00us", latencyStdev = "54.85us", totalRequests = 561810L, 
     startTime = 1413890149L, endTime = 1413890164L), .Names = c("latencyAvg", 
    "latencyMax", "latencyStdev", "totalRequests", "startTime", 
    "endTime"), class = "data.frame", row.names = 1L)), .Names = "duda"), 
    query = structure(list(), .Names = character(0))), .Names = c("fortune", 
"plaintext", "db", "update", "json", "query")) 

我想创建一个单个数据帧如下所示:

Type | Name | latencyAvg | latencyMax | latencyStdev | totalRequests | startTime | endTime 
json | duda | 201.40us | <etc..> 
update | duda | 201.40us | <etc..> 

通过平铺嵌套的数据帧。我想通过删除我想要的项目并使用rbind/cbind将它们移动到新的数据框中来手动执行此操作,但是有没有简单的方法来执行此类递归展平?

+0

您需要提供什么将是未来可能的安排和名称将出现始终是两个命名项'json'和'update'? – 2014-10-21 23:44:34

+0

JSON示例完全覆盖了我期望看到的数据 - 第一个嵌套框架将具有名称json,update,query等。第二个嵌套帧将有latencyAvg,latencyStdev等。预计JSON数据没有其他安排 – Hamy 2014-10-21 23:46:43

+1

你是怎么用'jsonlite'加载的?在写入文件之后,我一直试图加载它几次,并且我无法加载它没有错误 – 2014-10-22 02:28:02

回答

2

假设对象被命名为“数据”的不幸名称:

newdat <- rbind.data.frame(Type= c(rep("json", nrow(data$json$duda)), 
            rep("update", nrow(data$update$duda))), 
          rbind(data$json$duda, data$update$duda)) 
1

另一个oneliner

do.call(rbind, lapply(data[c('json', 'update')], '[[', 'duda'))