Jak mogę usunąć nieużywane poziomy z ramki danych?

Biorąc pod uwagę następujące fałszywe dane:

set.seed(123)
x <- data.frame(let = sample(letters[1:5], 100, replace = T), 
                num = sample(1:10, 100, replace = T))
y <- subset(x, let != 'a')

Tworzenie tabeli zy$let plony

a  b  c  d  e 
0 20 21 22 18

Ale ja nie chcęa pokazać już. Jeśli spróbuję to zrobić:

levels(y$let) <- factor(y$let)

Od tej pory niszczę częstotliwościtable(y$let) daje mi

b  d  c  e 
0 20 21 40 

Jestem świadomy, że mógłbym to zrobićxtabs(~ y$let, drop.unused.levels = T) i obejść ten problem, ale nie resetuje poziomów zmiennych w jego rdzeniu (co jest dla mnie ważne, ponieważ jest to wczesna zmiana w zbiorze danych, która będzie kontynuowana przez całą analizę). Co więcej,xtabs jest inną klasą niżtable, co da mi bóle głowy później w projekcie.

Pytanie brzmi: jak mogę się automatycznie zmienićlevels(y$let) więc nie pokazuje poziomów, które zostały upuszczone podczas tworzenia podzbioru? W tym przypadku, jak mogę to pokazać[1] "b" "c" "d" "e"?

questionAnswers(3)

yourAnswerToTheQuestion