Я хочу вменение отсутствующего значения во фрейме данных, которые имеют много атрибутов, как насчет цикла, если библиотека (Hmisc) используется в R? - PullRequest
0 голосов
/ 03 июля 2019

Мой код:

    df <- read.csv("data")
    summary(df)

    library(Hmisc)
    imp_a <- impute(df$a, mean)
    df$a <- imp_a
    imp_b <- impute(df$b, mean)
    df$b <- imp_b

Если атрибут не только a и b, то как тоже зациклить 1000 атрибутов? Большое спасибо.

1 Ответ

0 голосов
/ 03 июля 2019

Предполагая, что ваши данные настолько просты (но с большим количеством столбцов) ...

df <- data.frame(a = c(0,1,NA), b = c(1,NA,2), c = c(NA,2,1))

... вы можете запустить mutate_all из пакета dplyr, чтобы применить среднее вменение Hmisc квсе столбцы:

library(dplyr)

df %>% mutate_all(.funs = ~Hmisc::impute(.,mean))

    a   b   c
1 0.0 1.0 1.5
2 1.0 1.5 2.0
3 0.5 2.0 1.0

Если есть столбцы, которые вы не хотите или не можете использовать (например, символьные столбцы), вам придется немного изменить код и, вероятно, переключиться на mutate_at, например

df %>% 
  mutate_at(.vars = vars(a:c),
            .funs = ~Hmisc::impute(.,mean))
...