JSON不规则数据到R数据帧

时间:2017-08-03 06:27:55

标签: json r dataframe

我认为问题很简单,但它让我感到满意。假设我有一个json文件:

  

{ “KEY1”:[ “VALUE1”],
  “key2”:[“value2”,“value3”,“value4”],
  “key3”:[“value5”,“value6”]}

我想将它们导入数据框,如:

0 key value
1 key1 value1
2 key2 value2
3 key2 value3
4 key2 value4
5 key3 value5
6 key3 value6

使用不同的参数从jSON函数中尝试jsonlite和rjson,它返回一些列表而不是dataframe

从其他问题中尝试了几个答案,但仍然无法弄清楚。帮助是有用的!

尝试取消列出功能并采用丑陋的方法(灵感来自R unlist changes names):

json <- '{"key1":["value1"],
  "key2":["value2", "value3", "value4"],
  "key3":["value5", "value6"]}'

jsonR <- fromJSON(txt = json)

data.frame(key = rep(names(jsonR ), lengths(jsonR )), value = unlist(jsonR , use.names=F))

1 个答案:

答案 0 :(得分:0)

我猜你可以使用stackrev函数(分别来自utilsbase包)来实现这一目标:

> json <- '{"key1":["value1"],
+   "key2":["value2", "value3", "value4"],
+   "key3":["value5", "value6"]}'
> 
> df <- rev(stack(fromJSON(txt=json)))
> colnames(df) <- c('key', 'value')
> df
   key  value
1 key1 value1
2 key2 value2
3 key2 value3
4 key2 value4
5 key3 value5
6 key3 value6