Utilizando la tabla en un subconjunto obtiene frecuencias para todo el DF no el subconjunto

Estoy usando un subconjunto para extraer del conjunto de valores de una columna

Tengo un DF con varias columnas, una de ellas es estado. Necesito obtener frecuencias para el estado pero solo para un conjunto de estados. Entonces tengo esto:

tmp <- subset(DF, DF$STATE %in% SOMESTATES)
a   <- as.data.frame(table(tmp$STATE))

Esto está casi bien. El marco de datos tmp tiene solo los registros que pertenecen al conjunto SOMESTATES, bien.

El problema es a. El resultado de la tabla son las frecuencias completas para todo el DF, no solo el tmp. El otro tiene valores cero.

Mi problema aquí es que algunos estados en SOMESTATES tienen cero apariencias en el DF, lo que esto me impide usar droplevels. droplevels también elimina esos valores cero. Aquí también

Si uso droplevels como este, por ejemplo, pierdo los valores cero para algunos estados que necesito.

tmp <- subset(DF, DF$STATE %in% SOMESTATES)
tmp2 <- droplevels(tmp)
table(tmp2$STATE)

presenta todos los estados, no solo los de SOMESTATES

Cualquier consejo es apreciado