这应该很简单 - 我在Knitr
中运行定期报告,在那里我获取实时数据以供进一步处理。然而,由于我不清楚的原因,我的其中一条线已停止运作;因此这个问题。
fed_data<-getURL('http://www.federalreserve.gov/datadownload/Output.aspx?rel=H15&series=4c9742f6cd2efded850db98de3f2c75d&lastObs=&from=&to=&filetype=csv&label=include&layout=seriescolumn')
这没有问题。问题在于解析生成的字符串(此处显示返回字符串的开头)
SUBSTR(fed_data,1400) [1]&#34; \&#34;系列说明\&#34;,\&#34;合同率30年,固定比率常规家庭抵押承诺\&#34; \ r \ n \& #34;单位:\&#34; \&#34;百分比\&#34; \ r \ n \&#34;乘数:\&#34; \&#34; 1 \&#34; \ r \ n \&#34;货币:\&#34;,\&#34; NA \&#34; \ r \ n \&#34;唯一标识符:\&#34;,\&#34 ; H15 / H15 / RMMPCCFC_N.M \&#34; \ r \ n \&#34;时间段\&#34;,\&#34; RMMPCCFC_N.M \&#34; \ r \ n1971-04, 7.31 \ r \ n1971-05,7.43 \ r \ n1971-06,7.53 \ r \ n1971-07,7.60 \ r \ n1971-08,7.70 \ r \ n1971-09,7.69 \ r \ n1971-10,7.63 \ r \ n1971-11,7.55 \ r \ n1971-12,7.48 \ r \ n1972-01,7.44 \ r \ n1972-02,7.33 \ r \ n1972-03,7.30 \ r \ n&#34;
然后我尝试解析,跳过前六行(假设回车被正确识别):
interest <- scan(fed_data,skip=6, allowEscapes = T, quote="\"", sep=",")
结果输出:
> interest <- scan(fed_data,skip=6, allowEscapes = T,quote="\"", sep=",")
Error in file(file, "r") : cannot open the connection
In addition: Warning message:
In file(file, "r") :
cannot open file '"Series Description","CONTRACT RATE ON 30-YEAR, FIXED-RATE CONVENTIONAL HOME MORTGAGE COMMITMENTS"
"Unit:","Percent"
"Multiplier:","1"
"Currency:","NA"
"Unique Identifier: ","H15/H15/RMMPCCFC_N.M"
"Time Period","RMMPCCFC_N.M"
1971-04,7.31
1971-05,7.43
1971-06,7.53
关于为什么没有正确解析这个问题的任何想法?
答案 0 :(得分:1)
你不能使用吗?
url='http://www.federalreserve.gov/datadownload/Output.aspx?rel=H15&series=4c9742f6cd2efded850db98de3f2c75d&lastObs=&from=&to=&filetype=csv&label=include&layout=seriescolumn'
df <- read.csv(url,skip=5)
head(df)
# Time.Period RMMPCCFC_N.M
# 1 1971-04 7.31
# 2 1971-05 7.43
# 3 1971-06 7.53
# 4 1971-07 7.60
# 5 1971-08 7.70
# 6 1971-09 7.69
scan(...)
的问题是第一个参数被解释为文件名。您可以使用
scan(textConnection(fed_data),...)
但它仍未正确解析。 read.csv(...)
就是为此而建的。
您也可以使用
更简单地完成此操作library(quantmod)
getSymbols("MORTG",src="FRED")
head(MORTG)
# MORTG
# 1971-04-01 7.31
# 1971-05-01 7.43
# 1971-06-01 7.53
# 1971-07-01 7.60
# 1971-08-01 7.70
# 1971-09-01 7.69
答案 1 :(得分:1)
scan
帮助文件(在示例上方)显示read.table
更加用户友好&#34;读取数据矩阵的方法(以及多个文件的readLines
)。这可以通过
> url <- 'http://www.federalreserve.gov/datadownload/Output.aspx?rel=H15&series=4c9742f6cd2efded850db98de3f2c75d&lastObs=&from=&to=&filetype=csv&label=include&layout=seriescolumn'
> f <- read.table(url, skip = 6, sep = ",")
> head(f)
V1 V2
1 1971-04 7.31
2 1971-05 7.43
3 1971-06 7.53
4 1971-07 7.60
5 1971-08 7.70
6 1971-09 7.69
要获取列标题,请调整skip
并添加header = TRUE
read.table(url, skip = 5, sep = ",", header = TRUE)