r语言 - 如何使用"missForest"按因子水平插补值?



我试图用missForest中可用的非参数方法在我的数据框中计算缺失值。我的数据(OneDrive链接)由一个分类变量和五个连续变量组成。

head(data)
phylo     sv1 sv2      sv3 sv4 sv5
1 Phaon_camerunensis 6.03803  NA 5121.257  NA  70
2   Umma_longistigma 6.03803  NA 5121.257  NA  53
3   Umma_longistigma 6.03803  NA 5121.257  NA  64
4   Umma_longistigma 6.03803  NA 5121.257  NA  63
5      Sapho_ciliata 6.03803  NA 5121.257  NA  63
6     Sapho_gloriosa 6.03803  NA 5121.257  NA  63

我第一次使用missForest()是成功的

imp<- missForest(data[2:6])

然而,不是在整个数据矩阵(或向量?我想通过phylo来推算缺失的值。

我尝试了data[2:6] %>% group_by(phylo) %>%sapply(split(data[2:6], data$phylo)) %>%,但没有成功。

你知道怎么处理吗?

如果您想为每个组运行missForest,您可以使用group_map:

imp <- df %>% group_by(phylo) %>% group_map(~ missForest(.))

只从结果中获取第一项:

imp2 <- t(sapply(imp, "[[", 1))

虽然问题不是很清楚,但我假设您希望根据phylo变量估算数据集的子集。为此,你需要按因子变量拆分数据集,并在每个子集上应用输入函数。这可以只使用R基函数来实现:

# convert phylo to factor
data$phylo <- as.factor(data$phylo)
# split and impute according to each level 
data2 <-lapply(split(data,as.factor(data$phylon)), function(x) missForest::missForest(data))
# display the imputed dataset 
data2$ximp

相关内容

  • 没有找到相关文章

最新更新