我有以下问题。我有一个data.frame,由国家“标识符”(letters+numbers)、“年份”(数字)、“唯一标识符”(identifier+year)、“劳工统计”(数字)和“劳工统计”(数字)组成,其中缺少劳工market2的一些数据,需要插值。运行库(ImputeTS)后,将收到以下消息:
库(ImputeTS)警告消息:未知或未初始化的列:'x‘。
跑后
数据<- na.interpolation(数据)
我得到以下错误:
警告信息: 1:未知或未初始化的列:'x‘。2: imputeTS:由于na.interpolation(数据,i,选项)中的错误>,没有对第1列执行任何计算:输入x不是数字 3: imputeTS:由于na.interpolation(数据,i,选项)中的错误>,没有对第2列执行任何计算:输入x不是数字 4: imputeTS:由于na.interpolation(数据,i,选项)中的错误>,没有对第3列执行任何计算:输入x不是数字 5: imputeTS:由于na.interpolation(数据,i,选项)中的错误>,没有对第5列执行任何计算:输入x不是数字
有趣的是,在我将R版本从3.2.3升级到最新的3.5.1 (2018-07-02) --“羽毛喷雾”之后,na.interpolation(数据)停止了工作。
我想知道是否有一个解决方案,可以消除警告,执行interpolatioN,而不返回到R的旧版本。
提前谢谢你!
发布于 2018-09-25 06:15:44
我想您的dataset中的一个列存在问题。这条消息清楚地表明您有一个非数字列。你试过跳过非数字列吗?最近,我遇到了同样的问题,正在用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)
}})https://stackoverflow.com/questions/52003760
复制相似问题