Заменить значение с помощью режима для каждого столбца

Привет, ребята, я работаю над очень большим набором данных (200 столбцов, 750 000 строк). Есть несколько ячеек со значением -1, и я хочу заменить каждую из этих ячеек на основе режима (самого высокого повторяющегося значения) этого конкретного столбца, а не только одной стандартной вещи для всех -1. Например, -1 в столбце A заменяется на режим в столбце A, -1 в столбце B, замененным на режим столбца B.

Есть ли способ справиться с этим без необходимости создавать новые 200 столбцов и 750 000 строк, используя функцию if?

Спасибо за ваше время.

С уважением, InWoords

Мы можем использовать функцию Mode здесь

 Mode <- function(x) { ux <- unique(x) ux[which.max(tabulate(match(x, ux)))] } 

Затем с помощью mutate_all replace значения -1 на «Режим» каждого столбца

 library(dplyr) df1 %>% mutate_all(funs(replace(., .== -1, Mode(.)))) 

Неясно, является ли значение -1 наиболее частым значением в столбце. В этом исключить, что в mutate_all

 df1 %>% mutate_all(funs(replace(., .== -1, Mode(.[. != -1])))) 

Кроме того, если есть столбцы без -1, мы можем использовать mutate_if для пропуска этих

 df1 %>% mutate_if(funs(any(.==-1)),funs(replace(., .== -1, Mode(.[. != -1])))) 

данные

 df1 <- structure(list(V1 = c(1L, 0L, 3L, 2L, 3L, 5L, 0L, 4L, 4L, 0L), V2 = c(3L, 1L, 3L, 3L, 1L, 5L, 0L, -1L, 2L, -1L), V3 = c(-1L, 2L, 4L, -1L, 0L, 3L, -1L, 3L, 3L, -1L), V4 = c(1L, 0L, 1L, 0L, 5L, 0L, 4L, 3L, 3L, 5L), V5 = c(2L, 1L, 0L, 0L, -1L, -1L, 1L, 1L, 0L, 1L)), .Names = c("V1", "V2", "V3", "V4", "V5"), row.names = c(NA, -10L), class = "data.frame") 
  • Ошибка в eval (expr, envir, enc): объект «RM» не найден
  • R / python - Динамическое издание книги excel (формулы в ячейках)
  • Задайте значения в столбце R на основе значений в трех других столбцах
  • PDF-файлы в R или Excel для нескольких листов Excel с тремя различными переменными
  • Тест Mann-Whitney U с p-значением
  • Вывод прогнозов R в Excel
  • Объединение данных с использованием R (или, может быть, Excel) - циклирование для соответствия стимулам
  • Как заполнить отсутствующие даты?
  • Создайте один столбец из нескольких столбцов Rstudio или Excel
  • Как открыть файлы .XLS с помощью shinyApp
  • R-пакет openXLSX и арифметика с плавающей точкой могут давать неточные результаты
  • Interesting Posts
    Давайте будем гением компьютера.