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"
?