2014-07-17 69 views
0

我想將行值內的JSON值導出到我的data.set中的新列。如何將JSON行導出到data.frame列

我目前在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 
+0

無法打包'rjson'嗎? –

回答

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,因爲後者不提供10功能。