R-将插补的缺失值返回到数据帧中
我用它来插补R数据帧(bn_df)上的缺失值 代码如下:R-将插补的缺失值返回到数据帧中,r,imputation,hmisc,R,Imputation,Hmisc,我用它来插补R数据帧(bn_df)上的缺失值 代码如下: library(Hmisc) impute_arg <- aregImpute(~ TI_Perc + AS_Perc + CD_Perc + CA_Perc + FP_Perc, data = bn_df, n.impute = 5) 库(Hmisc) impute_arg您可以使用函数impute.transcan。由于您没
library(Hmisc)
impute_arg <- aregImpute(~ TI_Perc + AS_Perc +
CD_Perc + CA_Perc + FP_Perc,
data = bn_df, n.impute = 5)
库(Hmisc)
impute_arg您可以使用函数impute.transcan
。由于您没有提供数据,我从aregImpute
的文档中复制了一个示例
# The data
x1 <- factor(sample(c('a','b','c'),1000,TRUE))
x2 <- (x1=='b') + 3*(x1=='c') + rnorm(1000,0,2)
x3 <- rnorm(1000)
y <- x2 + 1*(x1=='c') + .2*x3 + rnorm(1000,0,2)
orig.x1 <- x1[1:250]
orig.x2 <- x2[251:350]
# Insert NAs
x1[1:250] <- NA
x2[251:350] <- NA
# Create a data frame
d <- data.frame(x1,x2,x3,y)
# Find value of nk that yields best validating imputation models
# tlinear=FALSE means to not force the target variable to be linear
# Use imputation
f <- aregImpute(~y + x1 + x2 + x3, nk=c(0,3:5), tlinear=FALSE,
data=d, B=10) # normally B=75
# Get the imputed values
imputed <-impute.transcan(f, data=d, imputation=1, list.out=TRUE, pr=FALSE, check=FALSE)
# convert the list to the database
imputed.data <- as.data.frame(do.call(cbind,imputed))
# arrange the columns accordingly
imputed.data <- imputed.data[, colnames(d), drop = FALSE]
#数据
谢谢你!它工作得很好。事实上,我可能跳过了这个函数。我们有没有办法用多重插补的平均值而不是任何特定的数字(插补=1)来代替这个值?
# The data
x1 <- factor(sample(c('a','b','c'),1000,TRUE))
x2 <- (x1=='b') + 3*(x1=='c') + rnorm(1000,0,2)
x3 <- rnorm(1000)
y <- x2 + 1*(x1=='c') + .2*x3 + rnorm(1000,0,2)
orig.x1 <- x1[1:250]
orig.x2 <- x2[251:350]
# Insert NAs
x1[1:250] <- NA
x2[251:350] <- NA
# Create a data frame
d <- data.frame(x1,x2,x3,y)
# Find value of nk that yields best validating imputation models
# tlinear=FALSE means to not force the target variable to be linear
# Use imputation
f <- aregImpute(~y + x1 + x2 + x3, nk=c(0,3:5), tlinear=FALSE,
data=d, B=10) # normally B=75
# Get the imputed values
imputed <-impute.transcan(f, data=d, imputation=1, list.out=TRUE, pr=FALSE, check=FALSE)
# convert the list to the database
imputed.data <- as.data.frame(do.call(cbind,imputed))
# arrange the columns accordingly
imputed.data <- imputed.data[, colnames(d), drop = FALSE]