【发布时间】:2013-10-05 16:46:01
【问题描述】:
我有一个带有 ID 列和几列值的数据框。我只想根据该行的 ID 值是否与另一组值匹配(例如,称为“keep”)来保留数据框的某些行。
为简单起见,这里是一个例子:
df <- data.frame(ID = sample(rep(letters, each=3)), value = rnorm(n=26*3))
keep <- c("a", "d", "r", "x")
如何创建一个新的数据框,其中包含的行的 ID 仅与 keep 的 ID 匹配?我可以使用which() 函数只为一封信执行此操作,但如果有多个信函,我会收到警告消息和不正确的返回。我知道我可以通过数据框运行 for 循环并以这种方式进行推断,但我想知道是否有更优雅和更有效的方法来解决这个问题。提前致谢。
【问题讨论】:
-
试试 df[df$ID %in% keep, ] or subset(df, ID %in% keep) -- 见stat.ethz.ch/R-manual/R-devel/library/base/html/sets.html