Nano Hash - криптовалюты, майнинг, программирование

Замена пропущенных значений на медиану для всех переменных в R

Мне нужно заменить недостающее значение на медиану для всех переменных. Я знаю, как это сделать для каждой переменной отдельно.

df$x1=ifelse(is.na(df$x1),median(df$x1,na.rm=T),df$x1)

Но у меня 21 переменная, и замена должна выполняться для 20 переменных из x1-x20. Как заменить пропущенное значение сразу для 20 переменных? Я не хочу создавать 20 струн.

20.05.2018

  • Не могу сказать точно, если вы не разместите образцы данных, но вы, вероятно, можете собрать их в данные длинной формы, сгруппировать по какой-либо переменной и выполнить эту операцию один раз. 20.05.2018

Ответы:


1

Вы можете использовать dplyr::mutate_at для замены отсутствующих значений на median для этого столбца. mutate_at обеспечивает гибкость (с использованием start_with) для выбора столбцов, начинающихся с X, для которых будет применяться правило.

library(dplyr)

df %>% mutate_at(vars(starts_with("X")), funs(ifelse(is.na(.),median(., na.rm = TRUE),.)))

#    ID X1   X2
# 1   a  1 21.0
# 2   b  2 22.0
# 3   c  7 23.0  << X1 was missing
# 4   d  7 24.0  << X1 was missing
# 5   e  7 25.0  << X1 was missing
# 6   f  6 26.0
# 7   g  7 24.5  << X2 was missing
# 8   h  8 24.5  << X2 was missing
# 9   i  9 29.0
# 10  j 10 30.0

Пример данных:

df <- data.frame(ID=letters[1:10], X1 = 1:10, X2 = 21:30)
df$X1[3:5] <- NA
df$X2[7:8] <- NA

df
#    ID X1 X2
# 1   a  1 21
# 2   b  2 22
# 3   c NA 23
# 4   d NA 24
# 5   e NA 25
# 6   f  6 26
# 7   g  7 NA
# 8   h  8 NA
# 9   i  9 29
# 10  j 10 30
20.05.2018
  • MKR, что, если моя последняя переменная - текст? Будет ли работать этот код? 21.05.2018
  • @ San.O Вы можете добавить дополнительное условие как ifelse(is.na(.) & is.numeric(.) ,median(., na.rm = TRUE),.)). Я не тестировал, но должно работать. 21.05.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..