有很多问题涉及重复观察的主题,但到目前为止,没有一个对我有用。
在这个问题中,我学习了如何从向量中选择所有重复项。
# 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 无关?
另一种选择使用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)