Удалите вложенный файл json с координатами в фрейм данных в R

У меня проблемы с синтаксическим анализом json-файла в фрейм данных в R. Мне удалось превратить json-файл в фрейм данных, но я не могу отключить столбец «геометрия». Ниже приведен образец файла json.

[
{
    "point_id": 4,
    "geometry": {
        "type": "Point",
        "coordinates": [
            -101.5961904,
            31.7070736
        ]
    },
    "NumericID": "4543842",
}
]

Когда я пытаюсь отключить вложенность, используя приведенный ниже код, я получаю сообщение об ошибке.

ex_data<-lapply(ex_data, function(x) ifelse (x == "NULL", NA, x))
ex_data<-as.data.frame(do.call(rbind, ex_data))
ex_data<-ex_data%>% bind_rows(ex_data) %>%    # make larger sample data
mutate_if(is.list, simplify_all)   # flatten each list element internally 
ex_data%>%unnest(geometry)->ex_data_unnest
Error: Each column must either be a list of vectors or a list of data frames 
[geometry]

Спасибо


person jsimpsno    schedule 19.10.2017    source источник


Ответы (1)


Используйте jsonlite::stream_in() для чтения JSON-файла (я скопировал ваш пример в JSON-файл несколько раз):

df <- stream_in(file("test.json"))

Изменить:

Распаковка столбцов геометрии:

df <- as.data.frame(cbind(df[,-2],
    do.call(rbind,df$geometry$coordinates),     
    df$geometry$type),
    stringsAsFactors = F)
names(df)[3:5] <- c("geometry.coordinates1","geometry.coordinates2","geometry.type")

df
   point_id NumericID geometry.coordinates1 geometry.coordinates2 geometry.type
1         4   4543842             -101.5962              31.70707         Point
2         4   4543842             -101.5962              31.70707         Point

Теперь вы можете получить доступ к значениям из data.frame

person tobiasegli_te    schedule 19.10.2017