【发布时间】:2014-01-03 21:54:37
【问题描述】:
我有一个数据框,其中包含多个具有 5 个因子水平的变量。我只想删除其中一个级别。首先,我将该级别的所有实例分配给 NA,然后使用droplevels 命令删除空级别。
但是,对于我的数据框中的一个变量,我不想删除的级别之一没有观察到。有没有办法只删除一个特定的因子水平,而不仅仅是空的。
这是一个可重现的例子
df <- data.frame(var1=rep(letters[1:5],2),var2=rep(letters[5:1],2),var3=c("a","c","d","e","a","c","d","e","a","c"))
levels(df$var3)<-c("a","c","d","e","b")
这会设置一个像我这样的数据框。现在我想删除级别 e 的所有实例,然后将其作为可能的级别删除。我用下面的代码来做这个。
df2<-replace(df, df=="e",NA)
df2<-droplevels(df2)
问题是当我使用droplevels 时,它也会从 var3 中降低 b 级。我不想从所有变量中删除级别 b 只是级别 e。我一直在寻找一种仅删除特定级别的方法,但没有找到答案。谁能告诉我如何只删除一个特定的因子水平?我最想要的是一个droplevels 命令,我可以告诉它只删除级别e。有这样的功能吗?
【问题讨论】: