我想从在线托管的 NOAA 文件中读取表格。该文件是各个城市的电台列表。我的问题是有一种读取数据的方法。这些列似乎没有一致地分开。这意味着我必须将 fill
选项设置为 true,这最终会导致多个单词城市出现在不同的列中。这显然不是我想要的,但我看不到可以纠正它的解决方案。有没有什么方法可以指定最后几列全部作为一列一起读取?或者也许我不应该使用 read.table 或者其他东西?如有任何帮助,我们将不胜感激!
代码如下。
url <- "ftp://ftp.ncdc.noaa.gov/pub/data/normals/1981-2010/station-inventories/temp-inventory.txt"
stations <- read.table(url, header=FALSE, skip=2, fill=TRUE, nrows = 5,
col.names = c("ID","lat","lon","UNK","State","City","UNK2","UNK3","UNK4")
)
stations
ID lat lon UNK State City UNK2 UNK3 UNK4
1 CQC00914080 15.2136 145.7497 252.1 MP CAPITOL HILL 1 TRADITIONAL
2 CQC00914801 14.1717 145.2428 179.2 MP ROTA AP 91221 TRADITIONAL
3 FMC00914395 5.3544 162.9533 2.1 FM KOSRAE 91355 TRADITIONAL
4 FMC00914419 5.5167 153.8167 1.5 FM LUKUNOCH TRADITIONAL
5 FMC00914446 9.6053 138.1786 14.9 FM MAAP TRADITIONAL
相关行的原始来源是这样的:
CQC00914080 15.2136 145.7497 252.1 MP CAPITOL HILL 1 TRADITIONAL
CQC00914801 14.1717 145.2428 179.2 MP ROTA AP 91221 TRADITIONAL
FMC00914395 5.3544 162.9533 2.1 FM KOSRAE 91355 TRADITIONAL
FMC00914419 5.5167 153.8167 1.5 FM LUKUNOCH TRADITIONAL
FMC00914446 9.6053 138.1786 14.9 FM MAAP TRADITIONAL
最佳答案
看起来像一个固定宽度的文件,可以使用?read.fwf
对其进行适当处理。这是似乎可以导入文件的完整行:
read.fwf(url, widths=c(11,9,10,7,4,31,3,10,13), strip.white=TRUE, comment.char="")
comment.char=""
是必需的,因为文本文件中有 #
字符,这些字符被 R 解释为注释字符。这使得某些行抛出异常一个错误,因为它没有找到它需要的所有列。
关于具有可变列的 read.table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41818988/