gpt4 book ai didi

r - 带有 R 的 zillow api - XML 问题

转载 作者:数据小太阳 更新时间:2023-10-29 02:02:47 27 4
gpt4 key购买 nike

我正在尝试从 Zillow API 读取信息,但在 R 中遇到了一些数据结构问题。我的输出应该是 xml,看起来是,但行为不像 xml。

具体来说,GetSearchResults() 返回给我的对象格式类似于 XML,但在 R 的 XML 读取函数中读取不太正确。

你能告诉我应该如何处理这个问题吗?

#set directory
setwd('[YOUR DIRECTORY]')

# setup libraries
library(dplyr)
library(XML)
library(ZillowR)
library(RCurl)

# setup api key
set_zillow_web_service_id('[YOUR API KEY]')

xml = GetSearchResults(address = '120 East 7th Street', citystatezip = '10009')
data = xmlParse(xml)

这会引发以下错误:

Error: XML content does not seem to be XML

Zillow API 文档清楚地指出输出应该是 XML,而且看起来确实是这样。我希望能够轻松访问 API 输出的各种组件以进行更大规模的数据操作/聚合。如果您有任何想法,请告诉我。

最佳答案

这对我来说是一个有趣的机会来熟悉 Zillow API。我的方法,遵循How to parse XML to R data frame , 是将响应转换为列表,以便于检查。繁重的一点是通过检查列表来弄清楚数据的结构,特别是因为每个属性都可能有一些缺失的数据。这就是我编写 getValRange 函数来处理 Zestimate 数据解析的原因。

results <- xmlToList(xml$response[["results"]])

getValRange <- function(x, hilo) {
ifelse(hilo %in% unlist(dimnames(x)), x["text",hilo][[1]], NA)
}

out <- apply(results, MAR=2, function(property) {
zpid <- property$zpid
links <- unlist(property$links)
address <- unlist(property$address)
z <- property$zestimate
zestdf <- list(
amount=ifelse("text" %in% names(z$amount), z$amount$text, NA),
lastupdated=z$"last-updated",
valueChange=ifelse(length(z$valueChange)==0, NA, z$valueChange),
valueLow=getValRange(z$valuationRange, "low"),
valueHigh=getValRange(z$valuationRange, "high"),
percentile=z$percentile)
list(id=zpid, links, address, zestdf)
})

data <- as.data.frame(do.call(rbind, lapply(out, unlist)),
row.names=seq_len(length(out)))

示例输出:

> data[,c("id", "street", "zipcode", "amount")]
id street zipcode amount
1 2098001736 120 E 7th St APT 5A 10009 2321224
2 2101731413 120 E 7th St APT 1B 10009 2548390
3 2131798322 120 E 7th St APT 5B 10009 2408860
4 2126480070 120 E 7th St APT 1A 10009 2643454
5 2125360245 120 E 7th St APT 2A 10009 1257602
6 2118428451 120 E 7th St APT 4A 10009 <NA>
7 2125491284 120 E 7th St FRNT 1 10009 <NA>
8 2126626856 120 E 7th St APT 2B 10009 2520587
9 2131542942 120 E 7th St APT 4B 10009 1257676

关于r - 带有 R 的 zillow api - XML 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38817153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com