Mantener solo ciertas filas de un marco de datos basado en un conjunto de valores

Tengo un marco de datos con una columna de ID y algunas columnas para los valores. Me gustaría mantener solo ciertas filas del marco de datos según si el valor del ID en esa fila coincide o no con otro conjunto de valores (por ejemplo, llamado "mantener").

Por simplicidad, aquí hay un ejemplo:

df <- data.frame(ID = sample(rep(letters, each=3)), value = rnorm(n=26*3))
keep <- c("a", "d", "r", "x")

¿Cómo puedo crear un nuevo marco de datos que consiste en filas que solo tienen ID que coinciden con las de mantener? Puedo hacer esto por una sola letra usando elwhich() Función, pero con varias letras recibo mensajes de advertencia y devoluciones incorrectas. Sé que podría ejecutar un bucle for a través del marco de datos y extrapolar de esa manera, pero me pregunto si hay una manera más elegante y eficiente de hacerlo. Gracias por adelantado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta