У меня есть фрейм данных с несколькими переменными, которые имеют 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
, он также снижает уровень b из var3. Я не хочу удалять уровень b только уровень e из всех переменных. Я искал способ удалить только определенный уровень, но не нашел ответа. Может ли кто-нибудь показать мне, как удалить только определенный уровень фактора? В идеале мне бы хотелось, чтобы команда droplevels
просто удалила уровень e. Существует ли такая функция?