2015-08-19 5 views
1

У меня есть следующий data.frame с одной колонкой под названием «JSON» и два ряда данных JSON:Как разбирать JSON с помощью JSON в столбце dataframe?

df <- data.frame(json = c('{"client":"ABC Company","totalUSD":7110.0000,"durationDays":731,"familySize":4,"assignmentType":"Long Term","homeLocation":"Australia","hostLocation":"United States","serviceName":"Service ABC","homeLocationGeoLat":-25.274398,"homeLocationGeoLng":133.775136,"hostLocationGeoLat":37.09024,"hostLocationGeoLng":-95.712891}', '{"client":"ABC Company","totalUSD":7110.0000,"durationDays":731,"familySize":4,"assignmentType":"Long Term","homeLocation":"Australia","hostLocation":"United States","serviceName":"Service XYZ","homeLocationGeoLat":-25.274398,"homeLocationGeoLng":133.775136,"hostLocationGeoLat":37.09024,"hostLocationGeoLng":-95.712891}')) 

Я пытаюсь разобрать JSON в data.frame с использованием fromJSON из пакета rjson.

я бросил столбец как тип характера, а затем пытаться разобрать:

> df$json <- as.character(df$json) 
> final <- fromJSON(json_str = df$json) 

Однако, это только кажется, чтобы дать мне первую строку JSON, в то время как я ожидаю, 2 строки.

Как я могу разобрать JSON в data.frame из df $ json?

ответ

4

Вы, вероятно, хотите результирующий кадр данных от этого упражнения, так:

do.call(rbind.data.frame, lapply(df$json, rjson::fromJSON)) 

##   client totalUSD durationDays familySize assignmentType homeLocation hostLocation serviceName homeLocationGeoLat 
## 2 ABC Company  7110   731   4  Long Term Australia United States Service ABC   -25.2744 
## 21 ABC Company  7110   731   4  Long Term Australia United States Service XYZ   -25.2744 
## homeLocationGeoLng hostLocationGeoLat hostLocationGeoLng 
## 2   133.7751   37.09024   -95.71289 
## 21   133.7751   37.09024   -95.71289 

В точные же результаты будут поступать от:

do.call(rbind.data.frame, lapply(df$json, jsonlite::fromJSON)) 
do.call(rbind.data.frame, lapply(df$json, RJSONIO::fromJSON)) 
Смежные вопросы