dplyr:按组操作具有多个参数的函数

时间:2014-02-28 16:50:53

标签: r dplyr

使用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"))

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

使用do()函数。它允许您将任意函数应用于分组数据框。

您还希望不仅提取impKNNa的输出,而且还提取impKNNA $ xImp,这是更改的数据帧。

另一个问题是impKNNA不想要除感兴趣的数字变量之外的任何变量,do()不会删除分类变量。因此,或许解决方案是为impKNNA编写一个包装函数,它将删除分类变量并返回xIMP,并使用do()将其应用于分组数据框。