Cómo puedo obtener R para contar el número de observaciones en un conjunto de datos que se encuentran bajo una categoría definida en otro conjunto de datos [cerrado]

Tengo un conjunto de datos grande con una variable llamada 'de', esta columna contiene muchos valores diferentes que son todos los nombres de las instituciones. En un conjunto de datos separado he definido estas instituciones exclusivamente y exhaustivamente en 8 tipos, en este conjunto de datos separado el 'tipo' es el encabezado de la columna y he enumerado debajo de los nombres que cuentan como ese tipo.

Me gustaría que R contara el número de observaciones en el primer conjunto de datos que entran en cada una de las 8 categorías que he definido en el segundo conjunto de datos. Sería genial si R pudiera hacer esto por todos los nombres de las instituciones reconocidos en el segundo conjunto de datos.

...

Además (no esencial), R listaría los nombres de las instituciones que ocurren en el primer conjunto de datos que no se reconocen en el primero Y podría entonces dar al usuario la opción de definir el nuevo nombre de institución no reconocido añadiéndolo a una columna en el segundo conjunto de datos.

Pregunta hecha hace 3 años, 5 meses, 3 días - Por binarybard1cc8


3 Respuestas:

  • Puesto que no tiene un ejemplo reproducible, sólo puedo proporcionar una respuesta muy general:

    count.function <- function(df1, df2){
     # Get distinct institution names to reduce computation
     df1 %>% distinct(from) -> df1
     # Create output dataframe
      output.df <- data.frame("name" = df1$from, "type 1" = rep(0, nrow(df)),..., "type 8" = rep(0, nrow(df)) #Name the columns based off of the types
      for(name in df1$from){
       for(type in colnames(df2)){
        if(name %in% df2[,type]){
         output.df[name, type] <- output.df[name, type] + 1
        }
       }
       return(output.df)
      }
      
    

    Esto producirá un marco de datos que tenga los nombres de las instituciones como columna 1 y los recuentos de cada ocurrencia de los nombres de esas instituciones en columnas individuales por tipo.

    Así que lo harías:

    count.function(df1, df2) -> count.output
    

    Respondida el Dec 20, 2020 a las 10:53 - por techwizkid

    Votos positivos: 0 | Votos negativos: 0

  • Parece que estás buscando contar el número de observaciones en un conjunto de datos que pertenecen a cada una de las categorías definidas en otro conjunto de datos en R. Para lograr esto, puedes seguir los siguientes pasos:

    • Cargar los dos conjuntos de datos en R.
    • Utilizar la función `table()` para contar el número de observaciones en el primer conjunto de datos que pertenecen a cada una de las categorías definidas en el segundo conjunto de datos.
    • Para identificar los nombres de instituciones que no se reconocen en el segundo conjunto de datos, puedes comparar los nombres de instituciones en ambos conjuntos y encontrar las diferencias.

    Aquí te dejo un ejemplo de cómo podrías hacerlo en R:

    R
    

    Suponiendo que tienes los conjuntos de datos df1 y df2

    df1 contiene las observaciones con la variable 'de'

    df2 contiene las categorías definidas con la variable 'tipo'

    Paso 1: Cargar los datos

    df1 <- read.csv("ruta/archivo/conjunto_datos1.csv") df2 <- read.csv("ruta/archivo/conjunto_datos2.csv")

    Paso 2: Contar el número de observaciones en df1 que pertenecen a cada categoría en df2

    count_by_tipo <- table(df1$de %in% df2$nombre)

    Paso 3: Identificar los nombres de instituciones no reconocidos

    instituciones_no_reconocidas <- setdiff(df1$de, df2$nombre)

    Mostrar los resultados

    print(count_by_tipo) print(instituciones_no_reconocidas)

    Recuerda que debes ajustar el código según la estructura y nombres de tus conjuntos de datos. Además, asegúrate de tener los datos correctamente cargados en R antes de ejecutar el código. Espero que esta respuesta te haya sido útil. Si necesitas más ayuda, ¡no dudes en preguntar!

    Respondida el Dec 21, 2020 a las 10:52 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Claro, aquí tienes el código R para contar el número de observaciones en un conjunto de datos que se encuentran bajo una categoría definida en otro conjunto de datos:

    r
    

    Cargar los dos conjuntos de datos

    datos <- read.csv("datos.csv") tipos <- read.csv("tipos.csv")

    Fusionar los dos conjuntos de datos por el nombre de la institución

    datos_fusionados <- merge(datos, tipos, by = "institucion", all.x = TRUE)

    Crear una nueva columna que cuente el número de observaciones para cada tipo

    datos_fusionados$cuenta <- ave(datos_fusionados$institucion, datos_fusionados$tipo, FUN = length)

    Obtener los tipos únicos en el segundo conjunto de datos

    tipos_unicos <- unique(tipos$tipo)

    Obtener los nombres de las instituciones que no se reconocen en el primer conjunto de datos

    instituciones_no_reconocidas <- setdiff(datos$institucion, datos_fusionados$institucion)

    Imprimir los resultados

    print("Recuento de observaciones para cada tipo:") print(table(datos_fusionados$tipo)) print("Instituciones no reconocidas:") print(instituciones_no_reconocidas)

    Preguntar al usuario si desea definir los nuevos nombres de las instituciones no reconocidas

    respuesta <- readline("¿Desea definir los nuevos nombres de las instituciones no reconocidas? (s/n)")

    Si el usuario responde "s", permitirle definir los nuevos nombres

    if (respuesta == "s") { for (institucion in instituciones_no_reconocidas) { nuevo_tipo <- readline(paste("Ingrese el tipo para", institucion, ": ")) tipos <- rbind(tipos, data.frame(institucion = institucion, tipo = nuevo_tipo)) }

    Guardar el segundo conjunto de datos con los nuevos nombres de las instituciones

    write.csv(tipos, "tipos.csv") }

    Este código fusiona los dos conjuntos de datos por el nombre de la institución, creando una nueva columna que cuenta el número de observaciones para cada tipo. A continuación, obtiene los tipos únicos en el segundo conjunto de datos y los nombres de las instituciones que no se reconocen en el primer conjunto de datos. Finalmente, imprime los resultados y pregunta al usuario si desea definir los nuevos nombres de las instituciones no reconocidas. Si el usuario responde "s", permite al usuario definir los nuevos nombres y guarda el segundo conjunto de datos con los nuevos nombres de las instituciones.

    Respondida el Dec 21, 2020 a las 11:06 - por Gemini

    Votos positivos: 0 | Votos negativos: 0