¿Hay alguna forma 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.Importación de datos de un archivo JSON a R
Respuesta
Primero instalar el paquete de rjson
:
install.packages("rjson")
continuación:
library("rjson")
json_file <- "http://api.worldbank.org/country?per_page=10®ion=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)
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)
brinda información sobre los votos en su ejemplo.
'x $ user $ name, x $ user $ user_id' ahora debería ser' x $ user ['name'], x $ user ['user_id'] '. Además, 'm <- do.call (rbind, m)' podría ser una mejor forma de convertir la lista en una matriz. – jbaums
gracias por señalar esto, lo arregló. –
¿hay algo así como la función convertToDataFrame para JSON (como lo hay para el paquete XML)? – userJT
Si la URL es https, como utilizado por Amazon S3, a continuación, utilizar getUrl
json <- fromJSON(getURL('https://s3.amazonaws.com/bucket/my.json'))
PSA: getURL está en el RCurl pacakge. –
Además, 'Error en la función (tipo, mensaje, asError = VERDADERO): Protocolo" s3 "no admitido o deshabilitado en libcurl' – d8aninja
jsonlite
importará el JSON en una trama 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
Me gusta esta respuesta y la biblioteca más que la aceptada –
Primero instalar el paquete de RJSONIO y RCurl:
install.packages("RJSONIO")
install.packages("(RCurl")
Trate a continuación 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)
- 1. Importación de datos de un archivo XML a R
- 2. Python: Importación de un "archivo de importación"
- 3. de anexión de datos a un archivo .json con PHP
- 4. guardando un archivo de datos en R
- 5. R: Aplanamiento genérico de JSON a data.frame
- 6. Android/Java JSON común interfaz de importación
- 7. Importación de varios archivos .csv en R
- 8. Importación de archivo CSV a Google Maps
- 9. Importación de archivos con Extensión .sqlite en R
- 10. vimrc archivo de importación
- 11. Importación por lotes de documentos json a Apache CouchDb
- 12. Importación de JSON en un proyecto de Eclipse
- 13. Importación de un archivo .sql en windows a postgresql
- 14. importación de modelo de Django
- 15. ¿Cómo cargo un archivo sql.gz a mi base de datos? (importación)
- 16. Escribiendo datos JSON en un simple archivo de texto
- 17. Importación de un archivo CSV en Java
- 18. cargar un archivo de datos en R utilizando TryCatch
- 19. importación de base de datos MySQL
- 20. Crear un vector a partir de un archivo en R
- 21. Importación de datos CSV usando PHP/MySQL
- 22. Trazando un archivo en R
- 23. Enviar datos de Python a Javascript (JSON)
- 24. Incrustar datos JSON en el archivo YAML
- 25. Pasar datos del archivo local utilizando json
- 26. ¿Cómo se divide un gran archivo de datos CSV en archivos de datos individuales usando R?
- 27. Filtrado de datos JSON
- 28. Importación de la base de datos MySQL de un servidor a otro
- 29. Importación de un archivo CSV en una tabla de base de datos sqlite3 usando Python
- 30. json respuesta contiene \ n \ r
Duplicado: http://stackoverflow.com/questions/2061897/parse-json-with-r. Si tiene un ejemplo de datos específico, eso ayudaría. De lo contrario, rjson puede hacer lo que necesita, junto con la manipulación de datos (por ejemplo, con una función de aplicar o plyr). – Shane
También es similar a esta pregunta: http://stackoverflow.com/questions/2260147/transposing-json-list-of-dictionaries-for-analysis-in-r. – Shane
Hola Shane, intenté usar RJSON. Estoy interesado principalmente en la manipulación de datos necesaria. Aquí hay un ejemplo de un archivo JSON con el que estoy trabajando. example.json: [{"winner": "68694999", "votes": [{"ts": "Thu Mar 25 03:13:01 UTC 2010", "user": {"name": "Lamur", "user_id": "68694999"}}, {"ts": "Jue mar 25 03:13:08 UTC 2010", "usuario": {"nombre": "Lamur", "user_id": " 68694999 "}}]," lastVote ": {" timestamp ": 1269486788526," user ": {" name ":" Lamur "," user_id ":" 68694999 "}}," startPrice ": 0}, ... ] – user313967