R Droplevels功能因子失败

时间:2015-04-14 21:30:54

标签: r

我的数据框名为'数据'包含一个名为' income'的变量。有26个级别。我想删除或删除级别'拒绝'所以只有25个级别。

以下是关卡的截断打印输出。请参阅编号26'拒绝':

> levels(data$income)
[1] "Under $1 000"       "$1 000 To 2 999"    "$3 000 To 3 999"
And so on...
[25] "$150000 Or Over"    "Refused"    

我研究了droplevels函数并尝试了这个:

data <- droplevels(income$Refused)

此:

droplevels(data, income$Refused)

即便如此:

data %<>% droplevels(income$Refused)

我认为问题可能是班级是因素。 droplevels上的文档并不容易破译。

2 个答案:

答案 0 :(得分:3)

droplevels()只删除未使用的值;你不能用它来删除明确的等级。如果你想删除所有行&#34;拒绝&#34;并从该因子中删除级别,然后使用此

droplevels(subset(data, income!="Refused"))

答案 1 :(得分:3)

我能想到降低特定级别的唯一方法是杀死级别,留下NA值而不是原始级别。 E.g:

dat <- data.frame(income=factor(c("a","b","c")))
dat$income
#[1] a b c
#Levels: a b c
factor(as.character(dat$income),levels=setdiff(levels(dat$income),"a"))
#[1] <NA> b    c   
#Levels: b c