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

时间:2013-10-05 16:46:01

标签: 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")

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

1 个答案:

答案 0 :(得分:18)

尝试df[df$ID %in% keep, ]subset(df, ID %in% keep) - 请参阅sets的帮助页面。

编辑:另外,如果是一封信,你可以写一下df[df$ID == "a", ]而非使用which()