假设我想使用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
是对标识号,b
代表性别
现在我们想要子集来创建一个数据集,其中我们有匹配的对ID和性别。
是使用while
命令创建循环还是使用duplicated
预期结果应返回以绿色
突出显示的数据子集
答案 0 :(得分:2)
你可以尝试
data[with(data, !!ave(b, a, FUN=function(x)
length(unique(x))==1)),]
或者
library(dplyr)
data %>%
group_by(a) %>%
filter(n_distinct(b)==1)
或者
library(data.table)
setDT(data)[,.(b=b[length(unique(b))==1]) , a]
@David Arenburg提供的另一个data.table
解决方案
setDT(data)[, if (length(unique(b)) == 1) .SD, a]