R: Существуют ли известные проблемы при совместном использовании пакетов plyr / dplyr / data.table и plm?

Я формировал набор данных панелей на основе многих других наборов данных панелей. Я был озадачен data.table или даже базовой функцией R merge(), которая часто меняет порядок строк. Итак, после долгих проб и ошибок я использовал следующее из plyr:

join(x, y, by=c("Firm", "Index"))

Наконец, когда я подготовил окончательный набор данных панели и использовал для анализа функцию attach() и пакет plm, я получил следующую ошибку:

Ошибка в pdim.default (индекс [[1]], индекс [[2]]), когда я исследую дальнейшее использование

options(error=recover)

я нахожу

stop(cat("duplicate couples (time-id)\n"))

Пожалуйста, подскажите, что может быть не так и как это исправить?


person Polar Bear    schedule 19.05.2016    source источник
comment
попробуйте sort = FALSE внутри merge().   -  person mtoto    schedule 19.05.2016
comment
@ Грегор, почему бы не прикрепить ()?   -  person Polar Bear    schedule 20.05.2016
comment
Это может вызвать проблемы, которые трудно отладить, когда присоединенные столбцы не синхронизируются друг с другом (и с фреймом данных). with() - хорошая альтернатива для одиночных команд, у которых нет аргумента данных. Но многие команды (например, plm!) Имеют аргумент data, поэтому вам вообще не нужно attach или использовать with.   -  person Gregor Thomas    schedule 20.05.2016
comment
См. ответы здесь для получения дополнительных сведений о вреде attach.   -  person Gregor Thomas    schedule 20.05.2016


Ответы (1)


Похоже, что в ваших данных (возможно, из-за процесса слияния) у вас есть лица, которые имеют одно и то же значение во временном индексе более одного раза (или более одного NA). Вы можете посмотреть свои данные или попробовать table(index(your_pdataframe), useNA = "ifany") узнать, какие именно.

person Helix123    schedule 19.05.2016
comment
Да, у меня намеренно есть повторяющиеся значения в Index. Предоставленный код дает: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1. Что это означает? - person Polar Bear; 20.05.2016