Quadro de dados do subconjunto com base no número de linhas por grupo

Eu tenho dados como este, onde alguns "nomes" ocorrem mais de 3 vezes:

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

Desejo subconjunto (filtrar) os dados com base no número de linhas (observações) dentro de cada nível da variável "nome". Se um determinado nível de "nome" ocorrer mais do que 3 vezes, desejo remover todas as linhas pertencentes a esse nível.

Eu escrevi este código, mas não consigo fazê-lo funcionar.

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

questionAnswers(2)

yourAnswerToTheQuestion