mlogit выдает ошибку: два индекса не определяют уникальные наблюдения

Мой фрейм данных с именем longData выглядит так:

  ID Set Choice Apple Microsoft IBM Google Intel HewlettPackard Sony Dell Yahoo Nokia
1  1   1      0     1         0   0      0     0              0    0    0     0     0
2  1   2      0     0         1   0      0     0              0    0    0     0     0
3  1   3      0     0         0   1      0     0              0    0    0     0     0
4  1   4      1     0         0   0      1     0              0    0    0     0     0
5  1   5      0     0         0   0      0     0              0    0    0     0     1
6  1   6      0    -1         0   0      0     0              0    0    0     0     0

Я пытаюсь запустить на нем mlogit:

logitModel = mlogit(Choice ~ Apple+Microsoft+IBM+Google+Intel+HewlettPackard+Sony+Dell+Yahoo+Nokia | 0, data = longData, shape = "long")

это дает следующую ошибку:

Error in dfidx::dfidx(data = data, dfa$idx, drop.index = dfa$drop.index,  : 
  the two indexes don't define unique observations

поискав некоторое время, я обнаружил, что эта ошибка была выдана dfidx, как показано в здесь как:

z <- data[, c(posid1[1], posid2[1])]
if (nrow(z) != nrow(unique(z)))
    stop("the two indexes don't define unique observations")

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

dfidx(longData)$idx

это дает ожидаемый результат как:

~~~ indexes ~~~~
   ID Set
1   1   1
2   1   2
3   1   3
4   1   4
5   1   5
6   1   6
7   1   7
8   1   8
9   1   9
10  1  10
indexes:  1, 2 

Итак, что я делаю не так, я видел несколько связанных вопросов 1, 2, но я не могу найти то, что мне не хватает.


person Ankit Agrawal    schedule 02.09.2020    source источник