Отбрасывать уровни с тем же именем из всего фрейма данных - PullRequest
0 голосов
/ 05 июня 2018

Отбросить уровень в одном факторе в кадре данных легко, и база R и различные пакеты предлагают несколько способов сделать это.Но есть ли способ отбросить уровни с одним и тем же именем из нескольких факторов по всему фрейму данных?

Например, в фрейме данных DF есть ли способ опустить уровень D с обоих V1и V2?

DF <- data.frame(V1 = factor(c("A", "B", "C", "A", "D", "E")),
                 V2=factor(c("A", "A", "A", "A", "D", "E")))

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вот пример для удаления определенного факторного уровня из всех факторов в кадре данных.

DF <- data.frame(V1 = factor(c("A", "B", "C", "A", "D", "E")),
                 V2=factor(c("A", "A", "A", "A", "D", "E")))

dropLevels <- function(col, value){
     if(is.factor(col)){
          droplevels(col, value)
     }else{col}
}


DF %>% purrr::modify(~ dropLevels(., "D")) 
0 голосов
/ 05 июня 2018

Вы можете использовать mapply и droplevels, однако вам нужно будет снова пересчитать переменные.

mapply(DF, FUN = function(x) droplevels(x, "D")) 

     V1  V2 
[1,] "A" "A"
[2,] "B" "A"
[3,] "C" "A"
[4,] "A" "A"
[5,] NA  NA 
[6,] "E" "E"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...