R 基于两个约束的子集数据帧

R 基于两个约束的子集数据帧,r,subset,R,Subset,假设我想使用2个约束进行子集。 1,如果第一列中的值相同 2,同时,第二列中的值应相同 例如,我有一个数据帧 a <- rep(1:5) b <- c(1,2,2,2,1,1,1,2,2,2) data <- data.frame(a,b) a你可以试试 data[with(data, !!ave(b, a, FUN=function(x) length(unique(x))==1)),] 或 或 或者@David Arenbu

假设我想使用2个约束进行子集。 1,如果第一列中的值相同 2,同时,第二列中的值应相同

例如,我有一个数据帧

a <- rep(1:5)
b <- c(1,2,2,2,1,1,1,2,2,2)
data <- data.frame(a,b)
a你可以试试

data[with(data, !!ave(b, a, FUN=function(x) 
                      length(unique(x))==1)),]

或者@David Arenburg提供的另一个
数据表
解决方案

setDT(data)[, if (length(unique(b)) == 1) .SD, a]

这是一个很好的问题,有可复制的示例和期望的输出,但您的解释技能需要改进。抱歉。您将如何改写?“当
b
每个
a
只有一个唯一值时,我试图仅提取行”?大概是这样吧。@DavidArenburg,谢谢,它比子集快吗(出于好奇)
library(data.table)
setDT(data)[,.(b=b[length(unique(b))==1]) , a]
setDT(data)[, if (length(unique(b)) == 1) .SD, a]