在 R 中,如何创建包含所有重复观察值的子集数据框?

rad*_*dek 1 r

有很多问题涉及重复观察的主题,但到目前为止,没有一个对我有用。

这个问题中,我学习了如何从向量中选择所有重复项。

# vector
id <- c("a","b","b","c","c","c","d","d","d","d")

#To return ALL duplicated values by specifying fromLast argument:
id[duplicated(id) | duplicated(id, fromLast=TRUE)]
## [1] "b" "b" "c" "c" "c" "d" "d" "d" "d"

#Yet another way to return ALL duplicated values, using %in% operator:
id[id %in% unique(id[duplicated(id)])]
## [1] "b" "b" "c" "c" "c" "d" "d" "d" "d"
Run Code Online (Sandbox Code Playgroud)

现在有一个像这样的数据框:

dat <- data.frame(x = c(1, 1, 2, 2, 3), 
                  y = c(5, 5, 6, 7, 8), 
                  z = c('a', 'b', 'c', 'd', 'e'))
Run Code Online (Sandbox Code Playgroud)

我如何选择同时具有 x 和 y 重复值的所有观测值,而与 z 无关?

San*_*osh 5

另一种选择使用dplyr

library(dplyr)
dat %>% group_by(x,y) %>% filter(n()>1) 

# A tibble: 2 x 3
#     x     y      z
#   <dbl> <dbl> <fctr>
#1    1     5      a
#2    1     5      b
Run Code Online (Sandbox Code Playgroud)