Dcast () странный вывод - PullRequest
0 голосов
/ 25 июня 2019

У меня есть два кадра данных.Применение одной и той же функции dcast () к двум приводит к разным результатам в выводе.Оба набора данных имеют одинаковую структуру, но разные размеры.Первая содержит более 950 строк:

enter image description here

Код, который я применяю:

trans_matrix_complete <- mod_attrib$transition_matrix




trans_matrix_complete[which(trans_matrix_complete$channel_from=="_3RDLIVE"),]

trans_matrix_complete <- rbind(trans_matrix_complete, df_dummy) 


trans_matrix_complete$channel_to <- factor(trans_matrix_complete$channel_to,
                             levels = c(levels(trans_matrix_complete$channel_to)))

trans_matrix_complete <- dcast(trans_matrix_complete,
                               channel_from ~ channel_to,value.var = 'transition_probability')

И вывод trans_matrix_complete Iget выглядит следующим образом:

enter image description here

Что-то не работает, как и должно быть, как с меньшим кадром данных из нескольких строк, я получаю следующий результат:

enter image description here

Где

a) номер строки другой.Я не уверен, почему в первом случае указаны две точки

b) и попытка присвоить имена строк для фрейма данных с помощью

row.names(trans_matrix_complete) <- trans_matrix_complete$channel_from

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

Есть идеи об этом странном поведении?

1 Ответ

0 голосов
/ 26 июня 2019

Я решил перейти от dcast () к spread () пакета tidyverse, используя следующую функцию:

trans_matrix_complete <-spread (trans_matrix_complete, channel_to, transition_probability) </p>

путем применения распространения () на двух кадрах данных матричный вывод имеет одинаковый формат и принимает имена строк без каких-либо проблем.

Так что я подозреваю, что все это связано с тем фактом, что пакеты dcast () и reshape2 больше не поддерживаются

Привет

...