es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agrupar y encontrar la intersección entre grupos en tidyverse.

Estoy intentando agrupar y encontrar la intersección entre los grupos definidos por “group_by” utilizandotidyverse .

datos de ejemplo:

data = tibble(feature = paste0(“Group_”, sample(1:800, 1000, replace = T)),classifier = paste0(“Classifier_”, sample(1:3, 1000, replace = T)))

los datos se ven así:

A tibble: 1,000 x 2 feature classifier

1 Group_629 Classifier_2

2 Group_549 Classifier_1

3 Group_565 Classifier_1

4 Group_584 Classifier_2

5 Group_181 Classifier_2

6 Group_359 Classifier_3

7 Group_135 Classifier_1

8 Group_676 Classifier_3

9 Group_731 Classifier_1

10 Group_694 Classifier_2 # … con 990 filas más

Estoy tratando de “group_by(classifier)” y encontrar la “intersect()” entre todos los grupos.

Código:

datos = tibble(feature = paste0(“Group_”, sample(1:800, 1000, replace = T)),
classifier = paste0(“Classifier_”, sample(1:3, 1000, replace = T))) %>%
group_by(classifier) %>%
mutate(intersect = intersect(feature))

produce este error:

Error: Problema con la entrada intersect en mutate().
x falta el argumento “y”, sin un valor por defecto
ℹ La entrada intersect es intersect(feature).
ℹ El error ocurrió en el grupo 1: classifier = “Classifier_1”.
Ejecute rlang::last_error() para ver dónde se originó el error.

Porque no estoy proporcionando 2 argumentos para intersect.

¿Alguien tiene una solución para esto? Muchas gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para encontrar la intersección (intersect) entre todos los grupos definidos por group_by utilizando tidyverse, podemos utilizar la función pull para extraer la columna de feature, agrupar (group_by) la columna de classifier, y luego aplicar la función intersect utilizando reduce del paquete purrr. Aquí está el código:

    “`{r}
    library(tidyverse)

    data %>%
    group_by(classifier) %>%
    pull(feature) %>%
    reduce(intersect)
    “`

    Esto dará como resultado la intersección (intersect) de todos los grupos definidos por group_by(classifier). Note que la función reduce aplica la función intersect a cada grupo de manera iterativa.

    ¡Espero que esto ayude!

Comments are closed.