的比例在R虚拟变量填充缺失值我在R.一个新的学习现在,我取得了填充缺失值的麻烦,需要你的帮助。我有一个这样的数据帧df:由non_missing价值
a <- c(0,0,0,1,1,1,NA)
b <- c(1,0,1,0,1,0,NA)
c <- c(0,1,NA,0,1,0,1)
df <- data.frame(a,b,c)
我想根据非NA值的比率来推算这些变量的缺失值。例如:变量a有0%的50%和1%的50%。因此,NA值应该被置换为0和1以保持比率相同。 这里是我的代码:
ratio0 <- function(x) { # ratio 0 of non NA missing value
table(x)[1]/sum(table(x)[1],table(x)[2])
}
ratio1 <- function(x) { # ratio 1 of non NA missing value
table(x)[2]/sum(table(x)[1],table(x)[2])
}
for(i in 1:ncol(df)) {
df[is.na(df[,i]), i] <- sample(c(0,1),sum(is.na(df[,i])),replace=TRUE,prob=c(ratio0(df[,i]),ratio1(df[,i])))
}
当应用上面的代码中,我得到了错误: “错误在sample.int(长度(X),大小,替换,概率):NA在概率向量”。
可否请你让我知道我的错误?
因为当我试图为一个变量应用代码,它的工作原理。例如,下面的代码来计算数据框df的第三列的缺失值。
df[is.na(df[,3]), 3] <- sample(c(0,1), sum(is.na(df[,3])), replace=TRUE, prob=c(ratio0(df[,3]), ratio1(df[,3])))
非常感谢您的帮助。
你能分享预期产出吗?你是否将两个“NA”值替换? – mtoto
我想用0或1代替NA值。在数据集中,例如:变量a有500个NA值。这500个NA值应该被0或1代替。0和1的比率取决于非NA值中0和1的比率。 – Celine
您的意思是更换的可能性,如您的示例中的比率将随替换0或1而更改。 – mtoto