Dato i seguenti dati finto:Come posso eliminare i livelli non utilizzati da un riquadro dati?
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')
Creazione di una tabella di y$let
cede
a b c d e
0 20 21 22 18
Ma non voglio a
mostrare più. Se provo a fare questo:
levels(y$let) <- factor(y$let)
ho pasticcio delle frequenze, dal momento che ora mi dà table(y$let)
b d c e
0 20 21 40
Sono consapevole che potevo fare xtabs(~ y$let, drop.unused.levels = T)
e aggirare il problema, ma non è così ripristinare i livelli variabili al suo interno (che è importante per me, poiché questo è un cambiamento iniziale che sto apportando al set di dati che continuerà per tutta l'analisi). Inoltre, xtabs
è una classe diversa da table
, che mi darà mal di testa più avanti nel progetto.
La domanda è: come posso cambiare automaticamente levels(y$let)
in modo che non mostri i livelli che sono stati rilasciati quando ho creato il sottoinsieme? In questo caso, come posso farlo mostrare [1] "b" "c" "d" "e"
?
La risposta vincente in cui duplica la domanda non è buona come la risposta qui. L'altro dovrebbe essere contrassegnato come un duplicato di questo poiché questa è una risposta MOLTO migliore – TheSteve0