2014-02-28 60 views
1

使用robCompositions包,我需要在組的基礎上推算缺失值。例如,使用虹膜數據集。dplyr:按組分組操作具有多個參數的函數

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 
} 

這是我不知道要使用哪個MANIP ...

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

使用do()函數。它允許您將任意函數應用於分組數據框。

您還需要提取impKNNa的輸出,特別是impKNNA $ xImp,它是已更改的數據幀。

另一個問題是impKNNA不想要除感興趣的數字變量之外的任何變量,並且do()不會刪除分類變量。因此,解決方案可能是編寫一個impKNNA的包裝函數,它將刪除分類變量並返回xIMP,並使用do()將其應用於分組數據框。