how do you convert data frame to json with multiple columns in R -
i need convert a data frame json format, data frame looks this:
dput(head(yyy,30)) structure(list(name = c("servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera", "servera"), date = structure(c(1374120000, 1374120060, 1374120120, 1374120180, 1374120360, 1374120420, 1374120540, 1374120600, 1374120840, 1374120960, 1374121020, 1374121080, 1374121200, 1374121440, 1374121500, 1374121620, 1374121680, 1374122040, 1374122160, 1374122280, 1374122400, 1374122580, 1374122640, 1374122700, 1374122940, 1374123000, 1374123120, 1374123180, 1374123240, 1374123360), class = c("posixct", "posixt"), tzone = "america/new_york"), resp = c(3644, 1067.5, 2738, 5224, 561, 723, 522, 408.5, 446, 683.75, 521, 385, 2666.5, 1268, 701, 143, 645, 474, 670.5, 549, 383, 1381, 483, 516, 467.5, 10726, 931.5, 773, 778, 323), vol = c(1l, 2l, 1l, 1l, 1l, 1l, 1l, 2l, 2l, 4l, 1l, 1l, 2l, 1l, 1l, 1l, 1l, 1l, 2l, 1l, 1l, 1l, 1l, 1l, 2l, 1l, 2l, 2l, 1l, 1l)), .names = c("name", "date", "resp", "vol"), row.names = c(1l, 3l, 7l, 8l, 13l, 17l, 21l, 25l, 33l, 39l, 42l, 44l, 48l, 59l, 63l, 68l, 71l, 83l, 88l, 91l, 98l, 105l, 109l, 113l, 122l, 123l, 129l, 132l, 135l, 140l), class = "data.frame") my json needs this:
first part include date , resp , second part need inclue date , vol on json format.
[{"name":"servera","yaxis":1, "data":[[<date>,<resp>],[<date>,<resp>]]},{"name":"servera","yaxis":2, "data":[[<date>,<vol>],[<date>,<vol>]]}] the json out put needs this:
[{"name":"servera","yaxis":1, "data":[[1374105840000,27.395],[1374107640000,26.646]]},{"name":"servera","yaxis":2, "data":[[1374105840000,25.983],[1374107640000,22.724]]}] if data frame include resp, convert this:
servers <- split(yyy, yyy$name) dumfun <- function(x){ sdata <- servers[x][[1]] if(nrow(sdata) >0){ # create appropriate list dumlist <- unname(apply(sdata[,2:3], 1, function(y) unname(as.list(y)))) return(tojson(list(name = x, data = dumlist))) } } jsdata <- lapply(names(servers), dumfun) jsind <- sapply(jsdata, is.null) p<-paste0('[', paste(jsdata[!jsind], collapse = ','), ']') is there easy way in r
i able in 2 steps follows:
dumfun <- function(x){ sdata <- servers[x][[1]] if(nrow(sdata) >0){ # create appropriate list dumlist <- unname(apply(sdata[,2:3], 1, function(y) unname(as.list(y)))) return(tojson(list(name = x, yaxis=1, data = dumlist))) } } dumfun1 <- function(x){ sdata <- servers[x][[1]] if(nrow(sdata) >0){ # create appropriate list dumlist <- unname(apply(sdata[,c(2,4)], 1, function(y) unname(as.list(y)))) return(tojson(list(name = x, yaxis=2, data = dumlist))) } } jsdata <- lapply(names(servers), dumfun) jsind <- sapply(jsdata, is.null) jsdata1 <- lapply(names(servers), dumfun1) jsind <- sapply(jsdata, is.null) t<-paste(jsdata, jsdata1, sep=',') p<-paste0('[', paste(t[!jsind], collapse = ','), ']')
Comments
Post a Comment