Skip to content
Prev 246707 / 398503 Next

Parsing JSON records to a dataframe

Jeroen Ooms wrote:
unlist is pretty fast. The solution below assumes that you know how your
structure is, so it is not very flexible, but it should show you that the
conversion to data.frame is not the bottleneck.

# json
library(RJSONIO)
# [ {"name":"joe", "gender":"male", "age":41},
#  {"name":"anna", "gender":"female", "age":23} ]
n = 300000
d = data.frame(name=rep(c("joe","anna"),n),
           gender=rep(c("male","female"),n),
           age = rep(c("23","41"),n))
dj = toJSON(d)

system.time(d1 <- fromJSON(dj))
#  user  system elapsed
#   4.06    0.26    4.32

system.time(
  dd <- data.frame(
    name = unlist(d1$name),
    gender = unlist(d1$gender),
    age=as.numeric(unlist(d1$age)))
)
#   user  system elapsed
#   1.13    0.05    1.18