我正在尝试将 SIPP 2014 面板数据导入 r,但遇到了一些麻烦。
可以在这里找到: https ://www.census.gov/programs-surveys/sipp/data/2014-panel/wave-1.html
通常,这将是一个非常简单的过程,我可以使用
data = read.csv("pu2014w1.dat")
问题源于数据集的大小以及我不知道它是由什么分隔的,也不知道列标题是如何完成的。遗憾的是,我找不到将此文件导入 R 的文档。
任何帮助将不胜感激。
我正在尝试将 SIPP 2014 面板数据导入 r,但遇到了一些麻烦。
可以在这里找到: https ://www.census.gov/programs-surveys/sipp/data/2014-panel/wave-1.html
通常,这将是一个非常简单的过程,我可以使用
data = read.csv("pu2014w1.dat")
问题源于数据集的大小以及我不知道它是由什么分隔的,也不知道列标题是如何完成的。遗憾的是,我找不到将此文件导入 R 的文档。
任何帮助将不胜感激。
似乎该文件https://thedataweb.rm.census.gov/pub/sipp/2014/pu2014w1.dat.gz
解压后是一个定宽格式的文本文件。所以,要阅读它,我们可以使用
library(readr)
read_delim("https://thedataweb.rm.census.gov/pub/sipp/2014/pu2014w1.sas",
delim = " ", col_names = FALSE, skip = 6) -> foo
fwf_positions(start = foo$X4, end = foo$X6) -> bar
bar[ - c(5223:5231), ] -> bar2
bar3 <- bar2 %>% mutate(width = end - begin)
foobar <- fwf_widths(bar3$width)
read_fwf("pu2014w1.dat.gz", col_positions = foobar)
请注意,在读取固定宽度的文本文件时,我们需要指定字段的位置。我通过操作 sas 输入文件的内容来做到这一点,该文件告诉我们字段的位置(用于 SAS)。此外,我必须先下载 gzip 压缩文件,然后才能成功阅读它。通常,我认为,可以直接从 url 读取。我不确定为什么从 url 读取在这里不起作用。