我有一个列表
query= { "id":"2317", "product":"112", "tag":"A,B,C"}
我想要这样的输出-
query1= { "id":"2317", "product":"112", "tag":"A"}
query2= { "id":"2317", "product":"112", "tag":"B"}
query3= { "id":"2317", "product":"112", "tag":"C"}
p.s:标签包含从1到n个项目的任意数量的项目。因此,如果代码中包含“ n”个项目,那么我们需要获取“ n”个查询。
有人可以帮助我如何在R中做到这一点?也许借助循环或任何有效的方法。
先谢谢您。>!
注意:在R中,查询将存储为字符。所以我使用的是query = fromJSON(query),那么它将存储为列表。
答案 0 :(得分:0)
我想最简单的方法是先将其转换为数据框,拆分标签列,然后将其转换回JSON:
df <- dplyr::bind_rows(fromJSON('{ "id":"2317", "product":"112", "tag":"A,B,C"}'))
s <- strsplit(df$tag, split = ",")
n <- length(unlist(s))
df <- data.frame(id = rep(df$id, n), product = rep(df$product, n), tag = unlist(s))
toJSON(df)
这将为您提供:
[{"id":"2317","product":"112","tag":"A"},{"id":"2317","product":"112","tag":"B"},{"id":"2317","product":"112","tag":"C"}]
您可以使用jsonlite::write_json(df, path = 'file_name.json')