loads importar guardar from data json r

importar - r get json from url



ImportaciĆ³n de datos de un archivo JSON a R (6)

Si la URL es https, como se usa para Amazon S3, entonces use getURL

json <- fromJSON(getURL(''https://s3.amazonaws.com/bucket/my.json''))

¿Hay alguna manera de importar datos de un archivo JSON a R? Más específicamente, el archivo es una matriz de objetos JSON con campos de cadena, objetos y matrices. El paquete RJSON no es muy claro sobre cómo lidiar con este http://cran.r-project.org/web/packages/rjson/rjson.pdf .


Un paquete alternativo es RJSONIO. Para convertir una lista anidada, lapply puede ayudar:

l <- fromJSON(''[{"winner":"68694999", "votes":[ {"ts":"Thu Mar 25 03:13:01 UTC 2010", "user":{"name":"Lamur","user_id":"68694999"}}, {"ts":"Thu Mar 25 03:13:08 UTC 2010", "user":{"name":"Lamur","user_id":"68694999"}}], "lastVote":{"timestamp":1269486788526,"user": {"name":"Lamur","user_id":"68694999"}},"startPrice":0}]'' ) m <- lapply( l[[1]]$votes, function(x) c(x$user[''name''], x$user[''user_id''], x[''ts'']) ) m <- do.call(rbind, m)

da información sobre los votos en su ejemplo.


paquetes:

  • biblioteca (httr)
  • biblioteca (jsonlite)

He tenido problemas al convertir json a dataframe / csv. Para mi caso lo hice:

Token <- "245432532532" source <- "http://......." header_type <- "applcation/json" full_token <- paste0("Bearer ", Token) response <- GET(n_source, add_headers(Authorization = full_token, Accept = h_type), timeout(120), verbose()) text_json <- content(response, type = ''text'', encoding = "UTF-8") jfile <- fromJSON(text_json) df <- as.data.frame(jfile)

luego de df a csv.

En este formato, debería ser fácil convertirlo a múltiples .csvs si es necesario.

La parte importante es que la función de contenido debe tener type = ''text'' .


jsonlite importará el JSON en un marco de datos. Opcionalmente puede aplanar objetos anidados. Las matrices anidadas serán marcos de datos.

> library(jsonlite) > winners <- fromJSON("winners.json", flatten=TRUE) > colnames(winners) [1] "winner" "votes" "startPrice" "lastVote.timestamp" "lastVote.user.name" "lastVote.user.user_id" > winners[,c("winner","startPrice","lastVote.user.name")] winner startPrice lastVote.user.name 1 68694999 0 Lamur > winners[,c("votes")] [[1]] ts user.name user.user_id 1 Thu Mar 25 03:13:01 UTC 2010 Lamur 68694999 2 Thu Mar 25 03:13:08 UTC 2010 Lamur 68694999


Primero instale el paquete RJSONIO y RCurl:

install.packages("RJSONIO") install.packages("(RCurl")

Pruebe el siguiente código usando RJSONIO en la consola

library(RJSONIO) library(RCurl) json_file = getURL("https://raw.githubusercontent.com/isrini/SI_IS607/master/books.json") json_file2 = RJSONIO::fromJSON(json_file) head(json_file2)


Primero instale el paquete rjson :

install.packages("rjson")

Entonces:

library("rjson") json_file <- "http://api.worldbank.org/country?per_page=10&region=OED&lendingtype=LNX&format=json" json_data <- fromJSON(paste(readLines(json_file), collapse=""))

Actualización: desde la versión 0.2.1

json_data <- fromJSON(file=json_file)