r - R:从 OData API 中提取 json 数据会产生不一致的结果?
问题描述
我正在尝试从威尔士政府统计服务 OData API 中提取数据。可以在此处找到有关 API 的详细信息,包括如何过滤数据的示例。
但是,我似乎得到了一个不确定的数据子集,即每次尝试都会导致返回不同数量的记录。
下面是一个简单的可重现示例。
另外我也试过:
- 使用
RJSONIO::fromJSON()
,结果相同。 - 尝试使用
odata.nextLink
url,如果它在 json 对象中返回,则继续提取更多数据。同样,每次尝试都会产生不同大小的对象。
任何见解将不胜感激。
## preliminaries
library(jsonlite)
# prepare filters
filter1 <- "Column_ItemName_ENG"
filter1.value <- "Gross%20expenditure"
filter2 <- "Row_ItemName_ENG"
filter2.value <- "Parking%20of%20vehicles"
query <- paste0("http://open.statswales.gov.wales/en-gb/dataset/lgfs0009?$filter=",
filter1, "%20eq%20%27", filter1.value, "%27%20and%20",
filter2, "%20eq%20%27", filter2.value, "%27")
# test 1
test1 <- jsonlite::fromJSON(query)
test1 <- test1[[2]]
# test 2
test2 <- jsonlite::fromJSON(query)
test2 <- test2[[2]]
# test 3
test3 <- jsonlite::fromJSON(query)
test3 <- test3[[2]]
# compare results
nrow(test1)
nrow(test2)
nrow(test3)
PS:这个问题是从RStudio Community交叉发布的,我保证用在另一个帖子上找到的相关解决方案更新其中一个帖子。
解决方案
推荐阅读
- git - Github - 上传文件夹
- swiftui - SwiftUI:在列表和网格/集合视图之间切换
- ios - 如何从 Healthkit API 获取 HKMetadataKeySwimmingStrokeStyle
- c - 充当 TCP 代理服务器的守护进程
- python - 根据条件在数据框中的列中生成值并向下复制粘贴值
- java - 出现错误:“web.xml 绝对排序标记处的片段名称错误”
- ios - 网络蓝牙在移动设备中的可用程度如何?
- javascript - 使用javascript计算输入字段中数据的总和
- python - 将 Avro 文件直接创建到 Google Cloud Storage
- design-patterns - 狼人(社会演绎)游戏的设计模式