Ошибка в na.interpolation(data[, i], опция): ввод x не является числовым
У меня следующая проблема. У меня есть data.frame, состоящий из "идентификатора" страны (буквы + цифры), "года" (цифры), "уникального идентификатора" (идентификатор + год), статистики "market market1" (цифры) и статистики "market market2" "(цифры), где некоторые данные для рынка труда2 отсутствуют и должны быть интерполированы. После запуска библиотеки (imputeTS) я получаю следующее сообщение:
библиотека (imputeTS) Предупреждающее сообщение: Неизвестный или неинициализированный столбец: 'x'.
После запуска
данные <- на.интерполяция (данные)
Я получаю следующие ошибки:
Предупреждающие сообщения: 1: Неизвестный или неинициализированный столбец: 'x'. 2: imputeTS: для столбца 1 не выполнено вменение из-за этой ошибки> в na.interpolation(data[, i], опция): ввод x не является числовым
3: imputeTS: для столбца 2 не выполнялось вменение из-за этой ошибки> в na.interpolation(data[, i], опция): ввод x не является числовым
4: imputeTS: для столбца 3 не было вменения из-за этой ошибки> в na.interpolation(data[, i], опция): ввод x не является числовым
5: imputeTS: для столбца 5 не выполнялось вменение из-за этой ошибки> в na.interpolation(data[, i], опция): ввод x не является числовым
Что интересно, перестал работать интерфейс na.interpolation(data) после того, как я обновил версию R с 3.2.3 до последней версии 3.5.1 (2018-07-02) - "Feather Spray".
Интересно, есть ли решение, чтобы избавиться от предупреждения и выполнить интерполяцию, не возвращаясь к более старой версии R.
Заранее спасибо!
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)
}})