在数据框中删除单个因子中的级别很容易,而基本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")))
答案 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)
您可以使用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"