Importowanie danych z pliku JSON do R [duplikat]
Czy istnieje sposób na import danych z pliku JSON do R? Dokładniej, plik jest tablicą obiektów JSON z polami łańcuchowymi, obiektami i tablicami. Pakiet RJSON nie jest zbyt jasny, jak sobie z tym poradzić http://cran.r-project.org/web/packages/rjson/rjson.pdf .
7 answers
Najpierw zainstaluj rjson
opakowanie:
install.packages("rjson")
Wtedy:
library("rjson")
json_file <- "http://api.worldbank.org/country?per_page=10®ion=OED&lendingtype=LNX&format=json"
json_data <- fromJSON(paste(readLines(json_file), collapse=""))
Aktualizacja: od wersji 0.2.1
json_data <- fromJSON(file=json_file)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-08 07:53:38
jsonlite
zaimportuje JSON do ramki danych. Opcjonalnie może spłaszczać zagnieżdżone obiekty. Zagnieżdżone tablice będą ramkami danych.
> library(jsonlite)
> winners <- fromJSON("winners.json", flatten=TRUE)
> colnames(winners)
[1] "winner" "votes" "startPrice" "lastVote.timestamp" "lastVote.user.name" "lastVote.user.user_id"
> winners[,c("winner","startPrice","lastVote.user.name")]
winner startPrice lastVote.user.name
1 68694999 0 Lamur
> winners[,c("votes")]
[[1]]
ts user.name user.user_id
1 Thu Mar 25 03:13:01 UTC 2010 Lamur 68694999
2 Thu Mar 25 03:13:08 UTC 2010 Lamur 68694999
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-04 21:51:32
Alternatywnym pakietem jest RJSONIO. Aby przekonwertować zagnieżdżoną listę, lapply może pomóc:
l <- fromJSON('[{"winner":"68694999", "votes":[
{"ts":"Thu Mar 25 03:13:01 UTC 2010", "user":{"name":"Lamur","user_id":"68694999"}},
{"ts":"Thu Mar 25 03:13:08 UTC 2010", "user":{"name":"Lamur","user_id":"68694999"}}],
"lastVote":{"timestamp":1269486788526,"user":
{"name":"Lamur","user_id":"68694999"}},"startPrice":0}]'
)
m <- lapply(
l[[1]]$votes,
function(x) c(x$user['name'], x$user['user_id'], x['ts'])
)
m <- do.call(rbind, m)
Podaje informacje o głosowaniach w twoim przykładzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-10 12:14:31
Jeśli adres URL jest https, jak używany w Amazon S3, następnie użyj getURL
json <- fromJSON(getURL('https://s3.amazonaws.com/bucket/my.json'))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-10 04:44:10
Najpierw zainstaluj pakiet RJSONIO i rcurl:
install.packages("RJSONIO")
install.packages("(RCurl")
Wypróbuj poniższy kod używając RJSONIO w konsoli
library(RJSONIO)
library(RCurl)
json_file = getURL("https://raw.githubusercontent.com/isrini/SI_IS607/master/books.json")
json_file2 = RJSONIO::fromJSON(json_file)
head(json_file2)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-15 11:28:55
Pakiety:
- biblioteka (httr)
- biblioteka (jsonlite)
Miałem problemy z konwersją json na dataframe / csv. W moim przypadku zrobiłem:
Token <- "245432532532"
source <- "http://......."
header_type <- "applcation/json"
full_token <- paste0("Bearer ", Token)
response <- GET(n_source, add_headers(Authorization = full_token, Accept = h_type), timeout(120), verbose())
text_json <- content(response, type = 'text', encoding = "UTF-8")
jfile <- fromJSON(text_json)
df <- as.data.frame(jfile)
Następnie z df do csv.
W tym formacie powinno być łatwo przekonwertować go na wiele .CSV w razie potrzeby.
Ważną częścią jest to, że funkcja zawartości powinna mieć type = 'text'
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-19 00:20:15
Import pakietu httr
library(httr)
Pobierz adres url
url <- "http://www.omdbapi.com/?apikey=72bc447a&t=Annie+Hall&y=&plot=short&r=json"
resp <- GET(url)
Drukuj zawartość resp jako tekst
content(resp, as = "text")
Drukuj zawartość resp
content(resp)
Użyj content (), aby uzyskać zawartość resp, ale tym razem nie określa drugi argument. R domyśla się automatycznie, że handlujesz z JSON i konwertuje JSON na nazwaną listę R.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-15 06:03:50