在R中选择多行以ID为条件

Posted

技术标签:

【中文标题】在R中选择多行以ID为条件【英文标题】:Select multiple rows conditioning on ID in R 【发布时间】:2011-12-06 05:24:59 【问题描述】:

我尝试根据 ID 选择行。例如,在一个名为test的数据框中,ID 201 有 6 行数据,ID 202 也有 6 行数据,还有 203、204……等等。

现在我只想从数据集中提取 201 和 202,所以它应该总共有 12 行。不过

out <- test[test$ID==c(201,202), ]
out <- subset(test, ID==c(201,202))

只返回三个201和三个202,分别是Row 1、Row 3、Row of 5 8 10 12。

谁能提供一些建议,告诉我如何在 R 中做到这一点?

【问题讨论】:

如果你想知道 为什么 你得到了你所做的,== 会逐元素比较并在一个向量用完时回收它。所以它只是用 201 和 202 交替检查 ID 列。%in% 答案是最好的,但你也可以使用subset(test, ID == 201 | ID == 202) 【参考方案1】:

你想要%in%,而不是==

out <- test[test$ID %in% c(201, 202), ]
out <- subset(test, ID %in% c(201, 202))

【讨论】:

@MattDowle 这是 data.table-intro 小插图或常见问题解答的绝佳候选者!上周末我肯定踩到了这个地雷。

以上是关于在R中选择多行以ID为条件的主要内容,如果未能解决你的问题,请参考以下文章

在其他表的多行中选择有条件的行

合并R中的多行

Oracle 8i 从具有相同 ID 但不同状态的多行数据集中选择查询

多行条件 SQL 查询

MYSQL 根据多行从表中选择

当多行满足要求时,如何通过连接在 PostgreSQL 中进行选择?