na.interpolation(数据[,i],选项)出错:输入x不是数字

时间:2018-08-24 11:44:32

标签: r warnings imputets

我有以下问题。我有一个由国家“标识符”(字母+数字),“年份”(数字),“唯一标识符”(标识符+年份),“劳动力市场1”(数字)和“劳动力市场2”统计组成的data.frame ”(数字),其中缺少劳动力市场2的某些数据,需要进行插值。 一旦运行库(imputeTS),我将收到以下消息:

  

图书馆(imputeTS)   警告信息:   未知或未初始化的列:“ x”。

运行后

  

数据<-na.interpolation(数据)

我收到以下错误:

  

警告消息:   1:未知或未初始化的列:“ x”。   2:imputeTS:第1列未执行插补,因为此错误>在na.interpolation(data [,i],option)中:输入x不是数字

     

3:imputeTS:由于存在此错误,因此没有为第2列执行插补>在na.interpolation(数据[,i],选项)中:输入x不是数字

     

4:imputeTS:由于存在此错误,因此没有对第3列进行插补>在na.interpolation(数据[,i],选项)中:输入x不是数字

     

5:imputeTS:由于存在此错误,因此没有对第5列进行插补>在na.interpolation(数据[,i],选项)中:输入x不是数字

有趣的是,在我将R版本从3.2.3更新到最新的3.5.1(2018-07-02)-“羽化喷雾”后,na.interpolation(data)停止工作。

我想知道是否有解决方案可以消除警告并执行插值,而又不返回到R的较早版本。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

我想您的数据集的某一列有问题。该消息清楚地表明您有一个非数字列。您是否尝试过跳过非数字列? 我最近在使用imputeTS软件包进行元素智能归算时遇到了相同的问题。我的解决方法是跳过字符列。就我而言,我有一个代表国家的数据框列表。一些数据框只有两个第一列(国家和年份),它们是字符。

list_imputed_values <- lapply(list_of_dataframes, function(x){
if (ncol(x) == 3) { # apply imputation to the third column only
name <- names(x)[3]
fixed <- x[, 1:2]
imputable <- x[, 3]
imputed <- as.data.frame(imputeTS::na.interpolation(imputable))
names(imputed) <- name
x <- cbind(fixed, imputed)
} else if (ncol(x) == 2) { # do not apply imputation because columns are non-numeric
x <- x[, 1:2]
 } else {  # apply imputation to all non-numeric columns
fixed <- x[, 1:2]
imputable <- x[, 3:ncol(x)]
imputed <- imputeTS::na.interpolation(imputable)
x <- cbind(fixed, imputed)
  }})