2013-07-15 5 views
3

У меня есть файл JSON следующим образом:формат JSON для преобразования формата CSV, используя R

library(RCurl) 
library(RJSONIO) 
url <- 'http://www.pm25.in/api/querys/aqi_details.json?city=shijiazhuang&token=5j1znBVAsnSf5xQyNQyq' 
web <- getURL(url) 
raw <-fromJSON(web) 

Я хочу, чтобы преобразовать его в CSV-файл, например так:

aqi area co  co_24h no2 no2_24h o3 o3_24h o3_8h o3_8h_24h pm10 
142 石家庄 1.509 1.412 95  47 3 137 35  90 119 
pm10_24h pm2_5 pm2_5_24h position_name primary_pollutant quality so2 
195  80 108  化工学校  颗粒物(PM2.5)  轻度污染 33 
so2_24h station_code   time_point 
32  1028A 2013-07-15T23:00:00Z 

я использовал as.data .frame() и другие функции, но это не сработало. Как я могу это сделать? Пожалуйста, помогите мне, спасибо.

+0

Пожалуйста, напишите (маленький, воспроизводимый) пример того, как выглядит объект 'raw'. Ваше решение может быть таким же простым, как 'write.csv (raw, 'raw.csv)', в зависимости от того, что у вас есть в настоящее время для имен столбцов и так далее. –

ответ

2

Там должно быть более читаемым решение ... Следующая заменяет NULL с с NA с, называет as.data.frame на каждой строке, и объединяет строки с rbind.

tmp <- lapply(raw, function(u) 
    lapply(u, function(x) if(is.null(x)) NA else x) 
) 
tmp <- lapply(tmp, as.data.frame) 
tmp <- do.call(rbind, tmp) 
tmp 
+0

Это сработало, спасибо :) – Benyu

Смежные вопросы