【发布时间】:2014-10-21 23:39:25
【问题描述】:
我正在用 jsonlite 加载这个 JSON 数据
<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"))
我想创建一个如下所示的单个 data.frame:
Type | Name | latencyAvg | latencyMax | latencyStdev | totalRequests | startTime | endTime
json | duda | 201.40us | <etc..>
update | duda | 201.40us | <etc..>
通过扁平化嵌套的数据框。我正在弄清楚如何通过删除我想要的项目并使用 rbind/cbind 将它们移动到新的数据框来手动执行此操作,但是有没有一种简单的方法来执行这种类型的递归展平?
【问题讨论】:
-
您需要提供可能的安排和将要进入的名称。是否总是有两个命名项目'json'和'update'?
-
JSON 示例完全涵盖了我希望看到的数据 - 第一个嵌套框架将具有名称 json、update、query 等。第二个嵌套帧将具有latencyAvg、latencyStdev等。预计不会对来自 JSON 的数据进行其他安排
-
你是如何用
jsonlite加载这个的?写入文件后我一直在尝试加载它几次,但我无法正确加载它 -
我认为这里有一个整齐的差距 - 即不需要手动识别嵌套元素的解决方案,例如
tidyr::unnest用于嵌套列表列。
标签: r nested dataframe jsonlite