我有一个数据框,其中有几个变量具有 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也被删除了。我只想删除所有变量中的水平e,而不是b。我已经寻找一种方法来删除特定的水平,但没有找到答案。有人能告诉我如何仅删除特定因子水平吗?理想情况下,我希望有一个droplevels
命令,可以让我只删除水平e。是否存在这样的函数?
as.character
。 - IRTFMfactor
函数中期望正常行为是合理的。 - BrodieGas.data.frame
会搞乱变量名,但check.names = FALSE
似乎有所帮助。 - PatrickT