Функция na.locf меняет значения фрейма данных с int на char в R?

У меня есть большой фрейм данных, в котором есть недостающие значения, которые я пытаюсь заполнить. Я пытался использовать функцию na.locf, но она меняет все мои значения во фрейме данных на символы. Мои данные - это данные о смертности, и НП находятся только в тех строках, где не было зарегистрировано никаких смертей (первые 6 столбцов есть, но есть НП для остальных столбцов). Мой df называется "Город". Есть ли лучший способ заполнения данных? У меня есть случаи, когда данные не записывались в течение 20–150 недель в других городах. Очевидно, мне не нужен na.locf для них.

City <- na.locf(City)

Данные о смертности


person ct957    schedule 30.03.2018    source источник


Ответы (2)


Он приводит ваш фрейм данных к матрице. Вместо этого сделайте это:

City[] <- lapply(City, na.locf0)

или если вы хотите применить его только к столбцам в jx (который может быть вектором целочисленных позиций, логическим вектором или именами столбцов), тогда:

City[jx] <- lapply(City[jx], na.locf0)

или чтобы не перезаписывать, назначьте City на City2, а затем работайте с City2 с помощью te выше, или используйте однострочник:

City2 <- replace(City, TRUE, lapply(City, na.locf0))

or

City2 <- replace(City, jx, lapply(City[jx], na.locf0))
person G. Grothendieck    schedule 30.03.2018
comment
Это исправляет столбцы, спасибо! При непрерывных линиях НА, что лучше использовать na.interpolation вместо na.locf0? - person ct957; 30.03.2018
comment
Вы можете найти na.aggregate, na.approx, na.fill, na.locf, na.spline, na.StructTS и na.trim. Один не лучше другого, но вопрос в том, что подходит. na.approx будет выполнять линейную интерполяцию, а na.spline будет выполнять интерполяцию сплайном, и обычно это две альтернативы, которые можно рассмотреть для na.locf. См. Дополнительную информацию в документации по зоопарку. - person G. Grothendieck; 30.03.2018

рассмотрите возможность использования tidyr::fill() вместо na.locf()

person Zafar    schedule 17.09.2018