导入具有奇怪列间距的文本文件

时间:2018-09-01 10:54:20

标签: r import

我正在尝试从Internet网址将txt文件的四列导入数据框。该文件具有以下数据结构:

20080713 20 28    999.99
20080723 17 50     -0.21
20080802 15 49     -0.21
20080812 13 47     -0.23
20080822 11 46     -0.27
20080901  9 44     -0.31
20080911  7 43     -0.38

尤其是我使用readr软件包。由于我相信文件是用制表符分隔的,因此我使用了read_tsv命令。

read_tsv(data.txt)

但是结果并不令人满意,因为它仅产生一个网格列,并且似乎没有检测到任何制表符分隔列。

即使尝试使用单个空格也无法解决问题

read_delim(data.txt, delim = " ")

我应该如何解决未知间距问题?

注意原始文件在这里: https://ipad.fas.usda.gov/lakes/images/lake0534.TPJOJ.2.smooth.txt

1 个答案:

答案 0 :(得分:0)

如果您查看文本文件中的数据并查看其中的符号,则可以看到列之间的分隔符是一个空格/多个空格。

如果要使用readr,则需要使用该选项以空格为单位读入数据。这就是read_table

lakes <- read_table("lake0534.TPJOJ.2.smooth.txt", skip = 12, col_names = FALSE)
head(lakes)

# A tibble: 6 x 4
        X1    X2    X3    X4
     <int> <int> <int> <dbl>
1 20080723    17    50 -0.21
2 20080802    15    49 -0.21
3 20080812    13    47 -0.23
4 20080822    11    46 -0.27
5 20080901     9    44 -0.31
6 20080911     7    43 -0.38

只需使用基数R的read.table

lakes <- read.table("lake0534.TPJOJ.2.smooth.txt", skip = 12, header = FALSE)
head(lakes)
        V1 V2 V3    V4
1 20080723 17 50 -0.21
2 20080802 15 49 -0.21
3 20080812 13 47 -0.23
4 20080822 11 46 -0.27
5 20080901  9 44 -0.31
6 20080911  7 43 -0.38