中位数替换,需要数字数据

时间:2017-09-27 13:42:15

标签: r na median imputation

我试图根据一个群体来估算缺失值。我收到一个错误,中位数()函数需要数字数据,但我的所有数据都是数字,所以我看不到问题。这是一个最低限度可重复的例子。

set.seed(123)
cluster = sample(seq(1,10),1000,replace=TRUE)
V1 = sample(c(runif(100),NA),1000,replace=TRUE)
V2 = sample(c(runif(100),NA),1000,replace=TRUE)

df = as.data.frame(cbind(cluster,V1,V2))

df_fixed = by(df,df$cluster,function(x){replace(x,is.na(x),median(x, na.rm=TRUE))})

错误返回:

  

median.default(x,na.rm = TRUE)出错:需要数字数据

这段代码虽然有用,但问题在于中位函数。

df_fixed = by(df,df$cluster,function(x){replace(x,is.na(x),1)})

1 个答案:

答案 0 :(得分:1)

{{1}}