psidR: build.panel () возвращает дубликат ошибки - PullRequest
0 голосов
/ 24 октября 2019

Только что попытался запустить функцию build.panel в пакете psidR. Он успешно загрузил все файлы 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, у вас должен быть доступ к нему, и вы можете копировать его в другое место. Ошибка должна быть воспроизводимой. Может потребоваться немного времени, пока он не загрузит наборы данных в первый раз.

Если это относится к NA в каждом аргументе getNames, есть ли обходной путь, при котором я все еще сохраняю соответствующий год, чтобы я мог различить это на своей панели?

Я знаю, что на соответствующей странице github была похожая проблема, связанная с почтовыми индексами с тем же именем, что и у одного из наборов данных. Тем не менее, моя папка содержит только правильные наборы данных и без почтовых индексов.

Я также пытался исключить случаи АН, но это испортило длину моих векторов. Я также попробовал это с помощью стандартного data.frame.

Я также проверил мои результирующие фреймы данных famvars / indvars на наличие дубликатов в Excel, но их нет, кроме NA, который, согласно примеру с github, найденным на https://github.com/floswald/psidR должен быть включен в набор данных ...

Большое спасибо за вашу помощь:)

EDIT: здесь traceback ():

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)

EDIT'': спасибо @Axeman, я сократил воспроизводимый пример. Мой фактический data.table содержит много других переменных.

ОБНОВЛЕНИЕ: Просто для тех, кто сталкивается с подобной проблемой: после попытки найти способ заставить функцию работать, я решил вместо этого вручную объединить все файлы и кадры данных,Будьте готовы, это гигантский проект, но так же, как и любой анализ PSID. Я следовал инструкциям, найденным здесь: http://asdfree.com/panel-study-of-income-dynamics-psid.html и объединил их с вспомогательной функцией пакета psidR (главным образом, getNamesPSID, чтобы получить имена переменных в каждой волне). Пока что очень успешно. Только хотелось бы, чтобы в Интернете было больше статей о точном функционировании пакета опросов.

...