【发布时间】:2021-04-02 17:52:53
【问题描述】:
我想解析这个文本文件:
https://www2.census.gov/programs-surveys/saipe/datasets/1995/1995-state-and-county/est95all.dat
最大的问题是前两行包含大多数行没有的信息。基本上这些值在后续列中应该是NA。
我一直在搞乱library(readr),最好的简单解决方案是:
DT <- read_table2("https://www2.census.gov/programs-surveys/saipe/datasets/1995/1995-state-and-county/est95all.dat",
col_names = FALSE, skip = 2)
这只是跳过前两行,然后正确解析大多数行,导致:
# A tibble: 3,192 x 26
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25 X26
<chr> <dbl> <dbl> <chr> <chr> <dbl> <chr> <chr> <dbl> <chr> <chr> <dbl> <chr> <chr> <dbl> <chr> <chr> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <chr> <chr> <chr>
1 01 1 5471 4391 6550 13.4 10.8 16.1 2352 1885 2820 20.1 16.1 24.1 1513 1207 1819 17.9 14.3 21.5 34842 31780 37888 Autauga County AL
2 01 3 15494 12415 18573 12.4 9.9 14.9 6151 4886 7416 19.3 15.3 23.3 3927 3098 4756 17.1 13.5 20.7 35014 31981 38031 Baldwin County AL
3 01 5 6423 5153 7692 24.9 20.0 29.8 2564 2049 3078 35.2 28.1 42.2 1716 1366 2066 32.4 25.8 39.1 24423 21343 27485 Barbour County AL
4 01 7 3313 2662 3964 18.1 14.5 21.7 1338 1071 1605 26.2 21.0 31.4 908 722 1094 24.2 19.2 29.1 26651 23548 29737 Bibb County AL
5 01 9 6041 4864 7219 13.7 11.0 16.4 2248 1794 2701 20.6 16.5 24.8 1442 1144 1740 18.4 14.6 22.2 30584 27559 33593 Blount County AL
6 01 11 3524 2817 4231 33.7 26.9 40.5 1448 1149 1746 44.1 35.0 53.2 966 764 1168 41.9 33.1 50.6 19063 15950 22158 Bullock County AL
7 01 13 5540 4436 6644 25.4 20.4 30.5 2347 1865 2828 36.8 29.2 44.3 1576 1244 1908 33.5 26.4 40.5 21918 18822 24998 Butler County AL
8 01 15 20008 16185 23831 17.5 14.2 20.8 7333 5889 8776 25.4 20.4 30.4 4557 3639 5475 21.7 17.3 26.0 27265 24408 30106 Calhoun County AL
9 01 17 6828 5478 8177 18.4 14.7 22.0 2621 2086 3156 27.8 22.1 33.5 1680 1329 2031 24.2 19.2 29.3 25571 22477 28648 Chambers County AL
10 01 19 3420 2725 4116 15.8 12.6 19.1 1128 893 1363 22.3 17.7 27.0 708 557 859 18.8 14.8 22.8 26719 23647 29775 Cherokee County AL
# ... with 3,182 more rows
然而,这导致了两个我无法解决的问题。
- 前两行的问题(请参阅链接,而不是数据),这在其他行中反复出现。
- 县通常由多个名称组成,将县分布在多个列中
有没有办法处理这些问题?
想要的结果很简单,link 中可见的数据
【问题讨论】:
-
你指向的数据没有分隔。它采用固定宽度格式。您应该改用read_fwf。有该文件可用的文件格式的描述:www2.census.gov/programs-surveys/saipe/technical-documentation/…
-
@MrFlick 谢谢!多么可怕的工作,但它确实有效……而且我想这无论如何都是最安全的选择。感觉应该有一个更快的选择虽然哈哈。
-
@MrFlick 我看到该操作删除了小数点。有什么办法可以防止吗?
-
不应该。你确定你的字段位置正确吗?这些值是否在打印过程中被四舍五入?也许显示你实际运行的代码。
-
这是一个四舍五入的问题,你是对的。对不起。再次感谢!