首页 > 解决方案 > Dcast() 奇怪的输出

问题描述

我有两个数据框。对两者应用相同的 dcast() 函数会得到不同的输出结果。两个数据集具有相同的结构但大小不同。第一个有 950 多行:

在此处输入图像描述

我申请的代码是:

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 输出如下:

在此处输入图像描述

某些东西无法正常工作,因为只有几行的较小数据框我得到以下结果:

在此处输入图像描述

在哪里

a) 行号不同。我不确定为什么在第一种情况下列出了两个点

b)同样,尝试将行名分配给数据框

row.names(trans_matrix_complete) <- trans_matrix_complete$channel_from

不适用于大型数据框,因为尽管 row.names 联系数据框显示与第一张图像中的完全相同,但没有为行分配名称。

对这种奇怪的行为有任何想法吗?

标签: rdcast

解决方案


我使用以下函数解决了从包 tidyverse 的 dcast() 移动到 spread() 的问题:

trans_matrix_complete<-spread(trans_matrix_complete, channel_to,transition_probability)

通过应用 spread() 这两个数据帧,矩阵输出具有相同的格式并且可以毫无问题地接受行名。

所以我怀疑这一切都与 dcast() 和 reshape2 包不再维护的事实有关

问候


推荐阅读