如何将JSON行导出到data.frame列

时间:2014-07-17 08:49:37

标签: r dataframe

我想将行值中的JSON值导出到data.set中的新列。

我当前的data.set:

   a  b  c
------------------- 
1 20 10 {d:10, e:6} 
2 25 15 {d:30, f:7}
3 40 20 {d:5}

to

   a  b  c  d  e  f
------------------- 
1 20 10  0 10  6  0
2 25 15  0 30  0  7
3 40 20  0  5  0  0

1 个答案:

答案 0 :(得分:0)

以下是使用rjsonplyr

执行此操作的方法
d <- data.frame(a=c(20,25,40),
                b=c(10,15,20),
                c=c('{"d":10, "e":6}','{"d":30, "f":7}','{"d":5}'), stringsAsFactors=FALSE)

library(rjson)
library(plyr)

tmp <- lapply(d$c, fromJSON)
tmp <- ldply(lapply(tmp, as.data.frame), I)
tmp[is.na(tmp)] <- 0
cbind(d, tmp)

给出了:

   a  b               c  d e f
1 20 10 {"d":10, "e":6} 10 6 0
2 25 15 {"d":30, "f":7} 30 0 7
3 40 20         {"d":5}  5 0 0

请注意,您必须在此使用plyr而不是dplyr,因为ldply功能在后者中不可用。