-3

这是我想从中获取数据的网络。
要解析的数据

url="http://www.treasury.gov/resource-center/data-chart-center/tic/Documents/mfh.txt"  
download.file(url, destfile="/tmp/data")  

我可以从网上以 txt 格式下载它,我怎样才能将数据作为数据框获取?

4

1 回答 1

1

我认为这是一个非常有趣的问题,不幸的是可能会被关闭,因为 OP 没有表现出任何努力来解决它。问题是关于从文本文件中提取数值表。

  1. 您应该首先使用在文本中检测表格的开头和结尾grep
  2. 用于read.fwf读取分隔数据
  3. 使用一些正则表达式将双标头更改为简单标头toString

这是我的代码:

ll <- readLines('allo1.txt')
i1 <- grep('Country',ll)
i2 <- grep('Grand Total',ll)
dat <- read.fwf(textConnection(ll[c(seq(i1+3,i2,1))]),
         widths = c(20,-1,rep(c(7,-1),13)))
dat.h <- read.fwf(textConnection(ll[c(i1-1,i1)]),
         widths = c(20,-1,rep(c(7,-1),13)))
nn <- unlist(lapply(dat.h,function(x)gsub('\\s|[*]','',toString(rev(unlist(x))))))
names(dat) <- nn

             Country, 2013,Apr 2013,Mar 2013,Feb 2013,Jan 2012,Dec 2012,Nov 2012,Oct 2012,Sep 2012,Aug 2012,Jul 2012,Jun 2012,May 2012,Apr
1  China, Mainland        1264.9   1270.3   1251.9   1214.2   1220.4   1183.1   1169.9   1153.6   1155.2   1160.0   1147.0   1164.0   1164.4
2  Japan                  1100.3   1114.3   1105.5   1103.9   1111.2   1117.7   1131.9   1128.5   1120.9   1119.8   1108.4   1107.2   1087.9
3  Carib Bnkng Ctrs 4/     273.1    283.9    280.3    271.8    266.2    263.5    273.5    261.1    263.9    247.6    244.6    243.2    237.3
4  Oil Exporters 3/        272.7    265.1    256.8    261.6    262.0    259.1    262.2    267.2    269.1    268.4    270.2    260.6    262.2
5  Brazil                  252.6    257.9    256.5    254.1    253.3    255.9    254.1    251.2    259.8    256.5    244.3    245.8    245.9
于 2013-07-16T02:10:41.450 回答