заменить NA в кадре данных случайным значением из этого столбца - PullRequest
0 голосов
/ 14 января 2019

У меня есть кадр данных с 15 столбцами, и для некоторых строк и некоторых столбцов отсутствуют значения NA.

Я нашел способ заменить NA в столбце случайно выбранным элементом в том же векторе, но как я могу сделать это для всего фрейма данных?

Например, если имя столбца age, я могу сделать:

age[is.na(age)] <- sample(age[!is.na(age)], sum(is.na(age)), replace=F)

Я хочу написать функцию, которая работает выше для каждого столбца во фрейме данных (15 столбцов). Проблема в том, как я могу индексировать каждый столбец? Я не могу использовать df[i,] в этом случае.

1 Ответ

0 голосов
/ 14 января 2019

Мы могли бы использовать lapply и replace

df[] <- lapply(df,function(x) replace(x,is.na(x), sample(x[!is.na(x)],sum(is.na(x)))))

Здесь мы перебираем весь столбец данных столбец за столбцом и replace значения NA с любым из не-NA с использованием sample.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...