gpt4 book ai didi

r - 在 R 中,如何用列均值替换缺失值?

转载 作者:行者123 更新时间:2023-12-04 09:36:40 28 4
gpt4 key购买 nike

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




我缺少要用列平均值替换的数据。如果有人可以提供有关如何使用 R 执行此操作的命令。该主题已显示在站点上,但说明不够通用,我无法完成该命令。任何帮助将不胜感激。

最佳答案

由于您的问题中没有很多细节,这就是我想象的可能是您的问题。
使用 require(reshape2); melt(yourdata)将您的数据转换为 long format如果它恰好是宽格式。
编辑:添加了宽格式和长格式示例。在宽格式的情况下,我缺乏解决此问题的 ddply 方法。请编辑以添加它。

require(data.table)
require(plyr)

长格式
set.seed(123)
df <- data.frame(group = sample(c(letters[1:5]), 10e5, replace=T),
q_var = sample(c(rpois(10, 50), NA), 10e5, replace = T))
DT <- data.table(df)

impute.mean <- function(x) replace(x, is.na(x), mean(x, na.rm = TRUE))

# Impute by group
imp1 <- ddply(df, ~ group, transform, q_var = impute.mean(q_var))

table(df$group)
length(df$group)

imp2 <- DT[, lapply(.SD, impute.mean), by = "group"]
table(DT$group)
length(DT$group)

require(rbenchmark)

imp_ddply <- function(x){
ddply(df, ~ group, transform, q_var = impute.mean(q_var))
}

imp_DT <- function(x){
DT[, lapply(.SD, impute.mean), by = "group"]
}

benchmark(imp_ddply(df), imp_DT(DT))
# test replications elapsed relative user.self sys.self
# imp_ddply(df) 100 156.47 13.419 149.94 6.35
# imp_DT(DT) 100 11.66 1.000 11.61 0.04

宽幅
require(reshape2)

wdf <- data.frame(matrix(sample(c(rpois(10, 50), NA), 900000, replace = T), ncol=3))
WDT <- data.table(wdf)

wide_imp1 <- apply(wdf, 2, impute.mean)
wide_imp2 <- WDT[, lapply(.SD, impute.mean)]

wide_apply <- function(x) apply(wdf, 2, impute.mean)
wide_DT <- function(x) WDT[, lapply(.SD, impute.mean)]

benchmark(wide_apply(wdf), wide_DT(WDT))
# test replications elapsed relative user.self sys.self
# wide_apply(wdf) 100 7.84 1.413 7.84 0
# wide_DT(WDT) 100 5.55 1.000 5.55 0

关于r - 在 R 中,如何用列均值替换缺失值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21167644/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com