仅基于一组值保留数据帧的某些行

use*_*910 9 r subset

我有一个带有ID列的数据框和几列值.我想仅根据该行中ID的值是否与另一组值匹配(例如,称为"keep")来保留数据帧的某些行.

为简单起见,这是一个例子:

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

如何创建一个新的数据框,其中的行只包含与keep相匹配的ID?我可以通过使用该which()函数只为一个字母执行此操作,但是使用多个字母我会收到警告消息和错误的返回.我知道我可以在数据框中运行for循环并以此方式推断,但我想知道是否有更优雅和有效的方法来解决这个问题.提前致谢.

Adr*_*ian 19

尝试df[df$ID %in% keep, ]subset(df, ID %in% keep)- 查看的帮助页面.

编辑:另外,如果这是一个字母,你可以写,df[df$ID == "a", ]而不是使用which().