如何平铺从jsonlite返回的嵌套数据帧 [英] How to flatten nested data frames returned from jsonlite
本文介绍了如何平铺从jsonlite返回的嵌套数据帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用jsonlite加载JSON数据
I am loading this JSON data with 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": {}
}
这导致嵌套数据框架的结构
Which results in a structure with nested data frames
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"))
我想创建一个单独的数据框架,如下所示:
I'd like to create a single data.frame that looks like this:
Type | Name | latencyAvg | latencyMax | latencyStdev | totalRequests | startTime | endTime
json | duda | 201.40us | <etc..>
update | duda | 201.40us | <etc..>
通过平铺嵌套的数据帧。我正在找出如何手动删除我想要的项目,并使用rbind / cbind将它们移动到一个新的数据框架,但是有一个简单的方式来做这种类型的递归平坦化?
By flatting the nested data frames. I'm figuring out how to do this manually by removing the items I want and using rbind/cbind to move them into a new data frame, but is there a simple way to do this type of recursive flattening?
推荐答案
假设该对象被命名为数据的不幸名称:
Assuming that object is named the unfortunate name of "data":
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) )
这篇关于如何平铺从jsonlite返回的嵌套数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文