Cuadro de datos de subconjunto basado en el número de filas por grupo

Tengo datos como este, donde algunos "nombres" aparecen más de 3 veces:

df <- data.frame(name = c("a", "a", "a", "b", "b", "c", "c", "c", "c"), x = 1:9)

Deseo agrupar (filtrar) los datos según el número de filas (observaciones) dentro de cada nivel de la variable "nombre". Si un cierto nivel de "nombre" aparece más de tres veces, quiero eliminar todas las filas que pertenecen a ese nivel.

Escribí este código, pero no puedo hacerlo funcionar.

as.data.frame(table(unique(df)$name))
subset(df, name > 3)

Respuestas a la pregunta(2)

Su respuesta a la pregunta