【问题标题】:Keeping only certain rows of a data frame based on a set of values根据一组值仅保留数据框中的某些行
【发布时间】: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 循环并以这种方式进行推断,但我想知道是否有更优雅和更有效的方法来解决这个问题。提前致谢。

【问题讨论】:

标签: r subset


【解决方案1】:

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

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

【讨论】:

  • 完美,非常感谢!我确实知道仅推断一个字母的另一种方法,但是在我使用 R 的整个历史中,我一直在使用 which() 方法,它在语法上对我来说看起来更漂亮(如果这有任何意义的话......)所以我坚持它:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 2016-09-10
  • 2020-01-12
  • 2017-01-14
  • 2021-12-27
  • 2019-07-11
相关资源
最近更新 更多