11

我有一个带有 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 循环并以这种方式推断,但我想知道是否有更优雅和有效的方法来解决这个问题。提前致谢。

4

1 回答 1

25

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

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

于 2013-10-05T16:55:09.470 回答