Esta pregunta es sobre un mecanismo genérico para convertir cualquier colección de estructuras de datos heterogéneas o heterogéneas no cíclicas en un marco de datos. Esto puede ser particularmente útil cuando se trata de la ingestión de muchos documentos JSON o con un documento JSON grande que es una matriz de diccionarios.R: Aplanamiento genérico de JSON a data.frame
Hay varios SO preguntas que tienen que ver con la manipulación de estructuras anidadas JSON y convertirlas en tramas de datos utilizando la funcionalidad como plyr
, lapply
, etc. Todas las preguntas y respuestas que he encontrado son sobre casos específicos en lugar de ofrecer un general enfoque para tratar con colecciones de estructuras de datos JSON complejas.
En Python y Ruby Me ha servido mucho implementar una herramienta de aplanamiento de estructura de datos genérica que utiliza la ruta a un nodo hoja en una estructura de datos como el nombre del valor en ese nodo en la estructura de datos aplanada. Por ejemplo, el valor my_data[['x']][[2]][['y']]
aparecería como result[['x.2.y']]
.
Si uno tiene una colección de estas estructuras de datos que pueden no ser completamente homogéneas, la clave para hacer un aplanamiento exitoso a un marco de datos sería descubrir los nombres de todas las columnas de dataframe posibles, por ejemplo, tomando la unión de todas las claves/nombres de los valores en las estructuras de datos planas individualmente.
Esto parece ser un patrón común, por lo que me pregunto si alguien ya ha creado esto para R. Si no, lo construiré pero, dadas las estructuras de datos basadas en promesas únicas de R, agradecería consejos sobre un enfoque de implementación que minimiza la agitación de montón.
¿Huh? Demasiado inglés para mí (de todos modos) para entender. Sugiera proporcionar alguna entrada reproducible con algún código (presumiblemente) lento que produzca el resultado que desea, e ir desde allí. Quizás es solo que no sé JSON. ¿Puede proporcionar algo fácil de preparar en una nueva sesión R que descargue datos JSON de algún lugar para demostrar su pregunta? [Cómo hacer un gran ejemplo reproducible] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) –