从整个数据框中删除相同名称的级别

时间:2018-06-05 18:06:40

标签: r dataframe

在数据框中删除单个因子中的级别很容易,而基本R和各种包提供了几种方法来执行此操作。但有没有办法从数据框中的几个因素中删除具有相同名称的级别?

例如,在数据框DF中,有没有办法从DV1中删除V2级别?

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

2 个答案:

答案 0 :(得分:3)

以下是从数据框中的所有因子中删除特定因子级别的示例。

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")) 

答案 1 :(得分:1)

您可以使用mapplydroplevels,但是,您需要再次对变量进行分解。

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"