0

我已经使用 mclust 包在一个非缺失数据帧上执行了一个操作。非缺失数据框是使用 dplyr 包通过 select 函数创建的。因此,row.names 在传递给 mclust 函数的数据框中显示为一个向量。

接下来我从这个函数中提取了一些关键值(案例“分类”):

class<-functionobject$classification

因此,分类值的数字列表与 row.names 相关联。

当我尝试将此值列表附加到没有 row.names 的相同长度(相同情况)的新数据帧时,我似乎失去了重要的排序。我知道这一点,因为当我比较新数据框中其他变量的分类组时,它们不等于使用这些相同变量在 mclust 函数中获得的值。

我不能简单地附加到 mclust 函数中使用的非缺失数据框(带有 row.names)的原因是,我需要函数中未使用的数据集中的其他变量,并且需要在 ID 变量上合并为:

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

所以我最终得到了一个长度相同但不再有 row.names 的数据框,我想在上面添加来自上述 mclust 函数的分类值。虽然我使用时没有抛出错误:

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

数据已关闭,因为我可以看到对相关变量的组(类)手段的检查不等于 mclust 函数中的那些(它们应该是相同的核心输入数据)。

我意识到我在这里遗漏了一些明显的东西,但是尽管对档案进行了详尽的搜索,但我还没有找到答案。进行这种相当乏味的争论的正确方法是什么?

4

1 回答 1

0

FWIW:一个简单但总体上可能仍然效率低下的解决方案是,在与其他验证变量合并之前,将保存的分类数据从 mclust 函数绑定到非缺失数据帧,如合并发生时,由 dplyr 诱导的“row.names”向量在选定的案例中,功能丢失,案例被诉诸。

当我意识到 mclust 函数基于非缺失数据框(使用 dplyr 创建)时,我突然想到了这个解决方案,因此结果数据对象遵循输入数据的大小写排序(按 row.names)

于 2020-01-13T04:52:29.737 回答