我的数据框名为'数据'包含一个名为' 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
上的文档并不容易破译。
答案 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