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.

¿Qué función R puedo utilizar para verificar si los valores de una columna son idénticos según un atributo?

Si su solución puede contener una solución basada en el paquete tidyverse, eso sería genial.

Básicamente, estoy tratando de agrupar por una columna titulada “Attribute” y comprobar si todos los valores en la columna “Values” son idénticos.

Este es mi resultado esperado:

Imagen: aquí

Como puede ver, para Mustang, la columna de valores es todo 1. Así que establecemos “matches” en “Sí”.

Para Corvette y Charger, como uno de los valores es diferente, establecemos “matches” en “No”.

Intenté:

data <- group_by(Attribute) %>% 
   mutate(Matches = ifelse(first(Value) != any(Value), "Yes", "No"))

No funcionó. ¡Cualquier ayuda es muy apreciada!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado esperado, puedes utilizar las funciones group_by() y summarise() del paquete dplyr en el tidyverse.

    Aquí tienes un ejemplo de código:

    library(dplyr)
    
    data %>%
      group_by(Attribute) %>%
      summarise(Matches = ifelse(n_distinct(Value) == 1, "Sí", "No"))
    

    Explicación:

    • group_by(Attribute) agrupa el dataframe por la columna Attribute.
    • summarise(Matches = ifelse(n_distinct(Value) == 1, "Sí", "No")) resume el dataframe creando una nueva columna llamada Matches. La función n_distinct() cuenta el número de valores distintos en la columna Value para cada grupo. Si solo hay un valor distinto, la columna Matches se establece como “Sí”, de lo contrario se establece como “No”.

    Esto debería darte el resultado esperado.

Comments are closed.