使用robCompositions包,我需要在组的基础上计算缺失值。例如,使用虹膜数据集。
library(robCompositions)
library(dplyr)
data(iris)
# Insert random NAs
for (i in 1:4) {
n_NA = sample(0:10, 1)
index_NA = sample(1:nrow(iris), n_NA)
iris[index_NA, i] = NA
}
这是我不知道使用哪种操作的地方......
impfunc <- function(x) x %.%
regroup(list(...)) %.%
mutate(impKNNa(x[,-5], k=6, metric="Euclidean"))
impfunc(iris, "Species")
iris %.% group_by(Species) %.% mutate(impKNNa(iris[,-5], k=6, metric="Euclidean"))
有什么想法吗?
感谢。
答案 0 :(得分:0)
使用do()函数。它允许您将任意函数应用于分组数据框。
您还希望不仅提取impKNNa的输出,而且还提取impKNNA $ xImp,这是更改的数据帧。
另一个问题是impKNNA不想要除感兴趣的数字变量之外的任何变量,do()不会删除分类变量。因此,或许解决方案是为impKNNA编写一个包装函数,它将删除分类变量并返回xIMP,并使用do()将其应用于分组数据框。