【问题标题】:JSON import in data.table not working in R (RStudio)data.table 中的 JSON 导入在 R (RStudio) 中不起作用
【发布时间】:2020-03-26 05:49:57
【问题描述】:

大家好,

通过使用导入的数据生成表格,我有这段代码可以正常工作:

library(jsonlite)
library(data.table)

response = fromJSON("https://www.cryptocompare.com/api/data/coinlist")
df = data.table::rbindlist(response$Data, fill=TRUE)
View(df)

但是,当我尝试使用此部分来拉取一个或多个代币的历史价格时:

library(jsonlite)
library(data.table)

response = fromJSON("https://min-api.cryptocompare.com/data/v2/histoday?fsym=BTC&tsym=USD&limit=10")
df = data.table::rbindlist(response$Data, fill=TRUE)
View(df)

我收到此错误消息:

Error in data.table::rbindlist(response$Data, fill = TRUE) :    Item 1
of input is not a data.frame, data.table or list

我真的很困惑,因为从它们都生成的结果来看(通过在浏览器中执行 web 链接,我得到几乎相同的标题数据......

请问我该如何解决这个问题?

谢谢 亚辛

[编辑] 改代码后为:

library(jsonlite)
library(data.table)

response = fromJSON("https://min-api.cryptocompare.com/data/v2/histoday?fsym=BTC&tsym=USD&limit=10")
df = data.table(response$Data, fill=TRUE)
View(df)

我得到了这个(一个单元格中的所有数据): Result table screenshot

请问如何将价格从 1 个单元格转换为行?

谢谢 亚辛

【问题讨论】:

  • 您查看过您的数据 (str(response)) 吗?这两个查询的结构完全不同。
  • 对不起,我不明白我应该怎么做?请问如何让表格生成第二段的请求数据?
  • 您的数据不同。第二个responseresponse$Data$Data,这是一个data.frame(不需要rbindlist)。如果您期望它与第一个 API 调用(正在工作)相似,那么就有问题了,因为没有任何列看起来匹配,这表明这是一个不同的响应。我不知道你应该做什么:我不知道数据,也不知道你打算用它做什么。

标签: r json rest api


【解决方案1】:
response = fromJSON("https://min-api.cryptocompare.com/data/v2/histoday?fsym=BTC&tsym=USD&limit=10")
# or
# response = fromJSON("https://min-api.cryptocompare.com/data/v2/histoday?fsym=BTC&tsym=USD&limit=10")


df = as.data.frame(response$Data)

# result
df

# Aggregated   TimeFrom     TimeTo  Data.time Data.high Data.low Data.open Data.volumefrom Data.volumeto Data.close Data.conversionType Data.conversionSymbol
# 1       FALSE 1584316800 1585180800 1584316800   5364.93  4454.22   5357.02       203116.86     996661883    5045.00              direct                      
# 2       FALSE 1584316800 1585180800 1584403200   5561.43  4950.90   5045.00       116314.49     618671972    5337.66              direct                      
# 3       FALSE 1584316800 1585180800 1584489600   5451.02  5024.71   5337.66       109210.96     576456806    5413.06              direct                      
# 4       FALSE 1584316800 1585180800 1584576000   6418.99  5268.33   5413.06       147007.71     868668217    6184.88              direct                      
# 5       FALSE 1584316800 1585180800 1584662400   6932.04  5691.69   6184.88       148232.44     947038098    6206.44              direct                      
# 6       FALSE 1584316800 1585180800 1584748800   6459.65  5876.79   6206.44        67262.29     415771089    6195.43              direct                      
# 7       FALSE 1584316800 1585180800 1584835200   6415.14  5750.68   6195.43        75451.24     457211402    5828.15              direct                      
# 8       FALSE 1584316800 1585180800 1584921600   6614.56  5703.64   5828.15       107692.99     667919370    6503.53              direct                      
# 9       FALSE 1584316800 1585180800 1585008000   6857.49  6406.64   6503.53       105151.69     700444488    6767.18              direct                      
# 10      FALSE 1584316800 1585180800 1585094400   6980.29  6483.00   6767.18        84721.04     566264216    6694.21              direct                      
# 11      FALSE 1584316800 1585180800 1585180800   6796.12  6581.48   6694.21        16824.06     112750770    6629.23              direct     

【讨论】:

    猜你喜欢
    • 2017-11-30
    • 1970-01-01
    • 2022-12-20
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多