Transformar JSON en dataframe en R

por | Jun 13, 2018 | R | 0 Comentarios

Ejemplo de transformación simple desde cadena de textologo-r

Muestra un ejemplo de trasformación de un json a un dataframe utilizando la función fromJSON

texto_json <- '[{"nombre":"Paco","color":"Rojo","edad":24,"altura":182,"peso":74.8,"puntuacion":null},
 {"nombre":"Juan","color":"Green","edad":30,"altura":170,"peso":70.1,"puntuacion":500},
{"nombre":"Andres","color":"Amarillo","edad":41,"altura":169,"peso":60,"puntuacion":null},
{"nombre":"Natalia","color":"Green","edad":22,"altura":183,"peso":75,"puntuacion":865},
{"nombre":"Vanesa","color":"Verde","edad":31,"altura":178,"peso":83.9,"puntuacion":221},
{"nombre":"Miriam","color":"Rojo","edad":35,"altura":172,"peso":76.2,"puntuacion":413},
{"nombre":"Juan","color":"Amarillo","edad":22,"altura":164,"peso":68,"puntuacion":902}]'

df <- jsonlite::fromJSON(texto_json)
data.table::as.data.table(df)
         nombre    color edad altura peso puntuacion
1:         Paco     Rojo   24    182 74.8         NA
2:         Juan    Green   30    170 70.1        500
3:       Andres Amarillo   41    169 60.0         NA
4:      Natalia    Green   22    183 75.0        865
5:       Vanesa    Verde   31    178 83.9        221
6: Miriam, Seth     Rojo   35    172 76.2        413
7:         Juan Amarillo   22    164 68.0        902

Transformación simple desde cadena de texto con comillas diferentes a lo estandar

Muestra un ejemplo de trasformación de un json a un dataframe utilizando la función fromJSON en ell que las comillas difieren de las estandar.

texto_json <- paste(c("[{'valor': '10', 'pais': 'US'}", 
                       "{'valor': '20', 'pais': 'US'}",
                       "{'valor': '30', 'pais': 'GB'}",
                       "{'otros': '20'}]"), collapse=", ")
texto_json <- gsub("'", "\"", texto_json)
df <- jsonlite::fromJSON(texto_json)
data.table::as.data.table(df)
   valor pais otros
1:    10   US  <NA>
2:    20   US  <NA>
3:    30   GB  <NA>
4:  <NA> <NA>    20

 

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *