首页 > 解决方案 > psidR:build.panel() 返回重复错误

问题描述

刚刚尝试在 psidR 包中运行 build.panel 函数。它确实为脚本的第一部分成功下载了所有 rda 文件,我将它们放入一个单独的文件夹中。但是,现在我运行该函数,我得到一个错误代码:

Error in [.data.table(yind, , :=((as.character(ind.nas)), NA)) : Can't assign to the same column twice in the same query (duplicates detected). In addition: Warning message: In [.data.table(tmp, , :=((nanames), NA_real_), with = FALSE) : with=FALSE ignored, it isn't needed when using :=. See ?':=' for examples.

可能是我错误定义变量的错?我只是使用 getNamesPSID 函数并将其插入到 data.table 中,类似于示例代码:

library(psidR)
library(openxlsx)
library(data.table)
cwf <- read.xlsx("http://psidonline.isr.umich.edu/help/xyr/psid.xlsx")

id.ind.educ1 <- getNamesPSID("ER30010", cwf)
id.fam.income1 <- getNamesPSID("V81", cwf)

famvars1 <- data.table(year=c(1968, 1969, 1970),
                       income1=id.fam.income1
                       )

indvars1 <- data.table(year=c(1968, 1969, 1970),
                       educ1=id.ind.educ1
                       )

build.panel(datadir = "/Users/Adrian/Documents/ECON 490/Heteroskedastic Dependency/Dependency/RDA", fam.vars = famvars1, ind.vars = indvars1, sample = "SRC", design = 3)

如果省略 datadir 参数,R 会将相应的数据集下载到临时目录。它将打印在输出中的确切位置。只要 R 进程运行,您就应该可以访问它并可以将其复制到其他地方。错误应该是可重现的。在第一次下载数据集之前可能需要一些时间。

如果它与每个 getNames 参数中的 NA 相关,是否有一种解决方法我仍然保留相应的年份,以便我可以在我的面板中区分它?

我知道在相应的 github 页面上存在类似的问题,该问题与与其中一个数据集同名的 zip 相关。但是,我的文件夹只包含正确的数据集,没有 zip。

我还尝试排除 NA 案例,但这弄乱了我的向量的长度。我还用标准的 data.frame 尝试过。

我还使用 Excel 检查了生成的 famvars / indvars 数据帧是否有重复项,但除了 NA 之外没有其他数据帧,根据https://github.com/floswald/psidR上的 github 示例,应该包含在数据集中...

非常感谢你的帮助 :)

编辑:这里是回溯():

3: [.data.table(yind, , :=((as.character(ind.nas)), NA))
2: yind[, :=((as.character(ind.nas)), NA)]
1: build.panel(datadir = "/Users/Adrian/Documents/ECON 490/Heteroskedastic Dependency/Dependency/RDA",
fam.vars = famvars, ind.vars = indvars, sample = "SRC", design = 3)

编辑'':谢谢@Axeman,我减少了可重现的例子。我的实际 data.table 包含更多变量。

更新:仅针对遇到类似问题的任何人:在尝试找到一种使该功能正常工作的方法后,我决定改为手动合并所有文件和数据框。做好准备,这是一个庞大的项目,但对 PSID 的任何分析也是如此。我按照这里的说明进行操作:http: //asdfree.com/panel-study-of-income-dynamics-psid.html并将它们与 psidR 包的辅助函数(主要是 getNamesPSID)相结合,以获取每个波中的变量名称)。到目前为止,非常成功。只希望网络上有更多关于调查包的确切功能的文章。

标签: rduplicatesdata.tablena

解决方案


推荐阅读