说我有以下数据并应用第一个过滤器
A <- (5:24)
B <- (10:29)
data <- data.frame(A,B)
data$C <- rep(1:((length(A)/2)))
data2 <- subset( data, B < 26)
现在我想进一步减少数据,以便只保留重复C
值的情况。我使用了以下代码:
data3 <- subset(data2, (summary(as.factor(C))) == 2)
是否可以使用pmatch()
或其他有效方式?
答案 0 :(得分:4)
有几种可能性。
您可以尝试duplicated
:
subset(data2, duplicated(C) | duplicated(C, fromLast = TRUE))
或者,您可以使用table
和%in%
:
idx <- table(data2$C) > 1
subset(data2, C %in% names(idx)[idx])
dplyr
的解决方案:
library(dplyr)
data2 %>%
group_by(C) %>%
filter(n() > 1)
data.table
的解决方案(由@akrun提出):
library(data.table)
setDT(data2)[data2[,.N>1, C]$V1]