Добавление числового c объекта списка значений с row.names к кадру данных той же длины без row.names - PullRequest
0 голосов
/ 12 января 2020

Я выполнил операцию, используя пакет mclust для не пропущенного фрейма данных. Непропускаемый фрейм данных был создан с использованием пакета dplyr с помощью функции select. Таким образом, row.names появляется в виде вектора во фрейме данных, переданном в функцию mclust.

Затем я извлек некоторые критические значения (случай 'классификация') из этой функции как:

class<-functionobject$classification

Таким образом, числовой список c значений классификации связан со строкой. names.

Когда я пытаюсь добавить этот список значений в новый фрейм данных той же длины (в тех же случаях) без row.names, кажется, я теряю важное упорядочение. Я знаю, что когда я сравниваю группы классификации по другим переменным в новом фрейме данных, они не равны значениям, полученным в функции mclust с использованием этих же переменных.

Причина, по которой я не могу просто добавить к непропущенному фрейму данных (с row.names), используемому в функции mclust, заключается в том, что мне требуются другие переменные из набора данных, которые не используются в функции и которые необходимо объединить по ID переменные как:

NEW_DF=merge(mclust_DF, other_DF, by=c("X1", "X2"))

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

FINAL_DF<- cbind.data.frame(NEW_DF, class)

Данные отключены, так как я вижу, что проверка группы (класса) означает, что соответствующие переменные НЕ равны значениям из функции mclust (что они и должны делать) это те же основные входные данные).

Я понимаю, что упускаю что-то очевидное здесь, но я не нашел ответа, несмотря на исчерпывающий поиск в архивах. Как правильно go об этом довольно утомительном споре?

1 Ответ

0 голосов
/ 13 января 2020

FWIW: простое, хотя, возможно, все еще неэффективное решение в целом состояло в том, чтобы связать сохраненные данные классификации из функции mclust с непропускаемым фреймом данных ДО объединения с дополнительными переменными проверки, как при слиянии, вектор 'row.names' Индуцированная dplyr в случае выбора случаев функция теряется, а случаи возвращаются.

Это решение меня осенило, когда я понял, что функция mclust была основана на непропущенном фрейме данных (созданном с использованием dplyr) и, следовательно, на результирующих объектах данных. после упорядочения регистра из входных данных (по row.names)

...