我有以下问题。我有一个由国家“标识符”(字母+数字),“年份”(数字),“唯一标识符”(标识符+年份),“劳动力市场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的较早版本。
提前谢谢!
答案 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)
}})