Arrays 使用R为JSON数据添加唯一id
我是R的初学者。我的情况是我有一个带有嵌套数组的JSON数据集。在JSON文件中,一个机构如下所示:Arrays 使用R为JSON数据添加唯一id,arrays,json,r,nested,Arrays,Json,R,Nested,我是R的初学者。我的情况是我有一个带有嵌套数组的JSON数据集。在JSON文件中,一个机构如下所示: { "website": "www.123.org", "programs": [ { "website": "www.111.com", "contact": "Jim" }, { "website": "www.222.com", "
{
"website": "www.123.org",
"programs": [
{
"website": "www.111.com",
"contact": "Jim"
},
{
"website": "www.222.com",
"contact": "Han"
}
]
}
每个机构可能有一个或多个项目。我在JSON中有100多个机构和近200个程序。我想为每个机构和每个项目的idpr广告id。最后,我希望我能得到一个data.frame,它看起来像:
id idpr website websitepr contactpr
1 1 www.123.org www.111.com Jim
1 2 www.123.org www.222.com Han
2 1 www.345.org www.aaa.com Lily
3 1 www.567.org www.bbb.com Jack
3 2 www.567.org www.ccc.com Mike
3 3 www.567.org www.ddd.com Minnie
.........
我尝试编写一个嵌套循环,如下所示:
计数你可以写一个
班级网站{
//将所有数据写入为数据成员
//作为类程序对象的程序
}
并使用jackson api将其转换为字符串。
使用Mapper.writeValueAsString(网站对象)
我们需要一个罐子
1.jackson-core-2.0.2.jar
# sample data
json.file <- textConnection('[{"website":"www.123.org","programs":[{"website":"www.111.com","contact":"Jim"},{"website":"www.222.com","contact":"Han"}]},{"website":"www.345.org","programs":[{"website":"www.aaa.com","contact":"Lily"}]},{"website":"www.567.org","programs":[{"website":"www.bbb.com","contact":"Jack"},{"website":"www.ccc.com","contact":"Mike"},{"website":"www.ddd.com","contact":"Minnie"}]}]')
# read the data into an R nested list
library(rjson)
raw.data <- fromJSON(file = json.file)
# a function that will process one institution
process.one <- function(id, institution) {
website <- institution$website
websitepr <- sapply(institution$programs, `[[`, "website")
contactpr <- sapply(institution$programs, `[[`, "contact")
data.frame(id, idpr = seq_along(websitepr),
website, websitepr, contactpr)
}
# run the function on all institutions and put the pieces together
do.call(rbind, Map(process.one, seq_along(raw.data), raw.data))
# id idpr website websitepr contactpr
# 1 1 1 www.123.org www.111.com Jim
# 2 1 2 www.123.org www.222.com Han
# 3 2 1 www.345.org www.aaa.com Lily
# 4 3 1 www.567.org www.bbb.com Jack
# 5 3 2 www.567.org www.ccc.com Mike
# 6 3 3 www.567.org www.ddd.com Minnie
#示例数据
json.xml文件