具有可变列的 read.table

标签 r

我想从在线托管的 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/

相关文章:

R Shiny 请求用户选择目录

r - 如何引用R data.table中的多行

r - 带有操作包的 ESS 中的交互式图形

r - 情节标题的文本换行

r - 将函数应用于 data.table 中的每个指定列并按引用更新

r - 当数据量很大时,dcast 无法转换字符列

r - ggplot2 使用 geom_errorbar 和 geom_point 将点添加到绘图中

r - 将矩阵从 char 转换为 num 而不丢失结构?

r - 使用 data.table 将 R 中的许多列乘以特定的其他列?

r - lme4中的多元线性混合模型