studio - MĂșltiples duplicados(2 veces, 3 veces,...) en R
eliminar duplicados en r studio (2)
Después de buscar por un tiempo, sé que esta pregunta aún no ha sido respondida. Supongamos que tengo el siguiente vector
v <- c("a", "b", "b", "c","c","c", "d", "d", "d", "d")
¿Cómo encuentro que esos valores tengan más de 1 duplicado?
(debe ser "c","c","c", "d", "d", "d", "d")
y más de 2 duplicados
(debe ser "d", "d", "d", "d"
)
La función duplicated(v)
solo devuelve valores que tienen duplicados.
Puede generar una table()
y luego verificar qué elementos de v
son parte del subconjunto relevante de la tabla, por ej.
R> v <- c("a", "b", "b", "c","c","c", "d", "d", "d", "d")
R> tab <- table(v)
R> tab
v
a b c d
1 2 3 4
R> v[v %in% names(tab[tab > 2])]
[1] "c" "c" "c" "d" "d" "d" "d"
R> v[v %in% names(tab[tab > 3])]
[1] "d" "d" "d" "d"
Yo usaría ave
para escribir una función simple como esta:
myFun <- function(vector, thresh) {
ind <- ave(rep(1, length(vector)), vector, FUN = length)
vector[ind > thresh + 1] ## added "+1" to match your terminology
}
Aquí se aplica a "v":
myFun(v, 1)
# [1] "c" "c" "c" "d" "d" "d" "d"
myFun(v, 2)
# [1] "d" "d" "d" "d"
Por supuesto, siempre hay "data.table":
as.data.table(v)[, N := .N, by = v][N > 1 + 1]$v
# [1] "c" "c" "c" "d" "d" "d" "d"
as.data.table(v)[, N := .N, by = v][N > 2 + 1]$v
# [1] "d" "d" "d" "d"